我有以下函数,并且我想测试两个字符串是否是anagrams。我认为这样做的一种方式是对字符串中每个字符的值进行求和,然后比较它们的值。C - 从char字符串中传递一个int值
但是,当我尝试运行我的程序时,在for循环中出现分段错误。我没有正确理解这一点,是否有任何我在我的代码中做错了?
int anagram(char *a, char *b)
{
int sum1 = 0;
int sum2 = 0;
char *p, *q;
for (p=a; p != '\0'; p++) {
sum1 += *p - 'a';
}
for (q=b; q != '\0'; q++) {
sum2 += *q - 'a';
}
if (sum1 == sum2)
return 1;
else
return 0;
}
应该是'* p!='\ 0''和'* q!='\ 0''。由于'p'和'q'不是NULL指针,你的循环是无限循环。 – user3386109
@Barmar我的意思是,如果我为字符串a输入hello并为字符串b输入loleh,我会返回1 – lodam
如何合并字符告诉你它们是否为字符?你会得到和“abc”和“bc”相同的总和。 – Barmar