По неизвестной причине результат запуска моей программы на C довольно неожиданный. Я думаю, что это должна быть какая-то ошибка новичка, однако я не могу понять, где она.
#include <stdio.h>
#include <string.h>
int main()
{
char string1[50];
char string2[50];
int compare;
puts("Enter two strings: ");
fgets(string1, strlen(string1)+1, stdin);
fgets(string2, strlen(string2)+1, stdin);
compare=strcmp(string1, string2); /* usage of extra variable makes the code more readable but wastes more memory */
printf("%d: ",compare);
if (compare<0) puts("First string is lesser");
else if (compare>0) puts ("First string is bigger");
else puts("Strings are equal");
return 0;
}
И на тестировании:
Enter two strings:
heheisntthisalongstring
heheisntthisalongstring
1: First string is bigger
------------------
(program exited with code: 0)
Press return to continue
Разве эти строки не должны быть равны?
fgets(s, num, stream)
читает символы до тех пор, пока не будет прочитано (num-1) символов или не будет достигнута новая строка или конец файла, в зависимости от того, что наступит раньше. При инициализации ваших строк со всеми 0strlen
возвращает 0, аfgets
не имеет символов для чтения. - person halex   schedule 24.08.2012