Я тестирую небольшую программу, которая в основном сравнивает, идентичны ли две строки ввода (как это делает strcmp). Однако я продолжаю получать результат, говоря, что 2 строки различны, несмотря ни на что. Если кто-то может заметить некоторые ошибки, я бы оценилСравните 2 строки в C
int comp(char str1[], char str2[]) {
int i = 0;
while (str1[i] == str2[i]) {
if (str1[i] == '\0' || str2[i] == '\0')
break;
i++;
}
if (str1[i] == '\0' && str2[i] == '\0')
return 0;
else
return -1;
}
int main(int argc, char * * argv) {
int cmp;
char str1[1000], str2[1000];
cmp = comp(str1, str2);
if (cmp == 0)
printf("The two strings are identical.\n");
else
printf("The two strings are different.\n");
return 0;
}
Содержимое массивов 'str1 [1000], str2 [1000]' никогда не устанавливается. Мы даже не можем быть уверены, что они имеют нулевое завершение символа. – chux
Кажется, вы возвращаете '-1' за' false', '0' за' true'. Для совместимости со стандартом: ** не **! Используйте стандартные логические значения: '0' для' false, '1' для' true'. – Olaf
* Всегда * правильно инициализировать переменные * перед тем, как читать их. – alk