我对此行有疑问flag[str[i]-'a']++;
这条线是如何工作的。
完整节目请访问http://www.programmingsimplified.com/c/source-code/c-anagram-program
char str[44];
int flag[26],i=0;
gets(str);
while(str[i]!='\0')
{
flag[str[i]-'a']++; // How this line work
i++;
}
i=0;
while(str[i]!='\0')
{
printf("\n%d, %d ",str[i]-'a');
i++;
}
最佳答案
小写“a”解析为十进制 97。减去 97 基本上允许您使用字符“a”、“b”、“c”等作为 flag
数组的索引。一旦完成,++
就会递增数组中适当的字母槽。
因此,flag[0]
代表字母“a”,flag[1]
代表字母“b”,依此类推。
关于c - 在这个程序中,这一行是如何工作的 "flag[str[i]-' a']++;"有人能解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820664/