strcmp
является одной из немногих функций, которые имеют обратные результаты true и false ... если строки равны, результат равен 0, а не 1, как вы могли бы подумать ....
if (strcmp(a, b)) {
/* Do something here as the strings are not equal */
} else {
/* Strings are equal */
}
Говоря о fgets
, существует вероятность того, что в конце строки есть новая строка ... вам нужно избавиться от нее ...
+-+-+-+--+--+
|b|o|b|\n|\0|
+-+-+-+--+--+
Чтобы избавиться от новой строки, сделайте это. CAVEATS: Не используйте «strlen (aName) - 1», потому что строка, возвращаемая fgets, может начинаться с символа NUL, поэтому индекс в буфер становится равным -1:
aName[strcspn(aName, "\n")] = '\0';
+-+-+-+--+
|b|o|b|\0|
+-+-+-+--+
Теперь strcmp
должен возвращать 0 ...