У меня есть следующая функция, и я хочу проверить, являются ли две строки анаграммами. Один из способов, который я думал об этом, - суммировать значения каждого из символов в строках, а затем сравнить их значения.C - Передача значения int из строки char
Однако, когда я пытаюсь запустить свою программу, я получаю ошибку сегментации в обоих циклах. Я не понимаю этого правильно, есть ли что-то, что я делаю неправильно в своем коде?
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 и loleh для строки b, я бы вернул 1 – lodam
И как добавление символов говорит вам, являются ли они анаграммами? Вы получите те же суммы для '' abc "и' "bc" '. – Barmar