【发布时间】:2021-06-18 22:16:25
【问题描述】:
我想比较 2 个字符串,如果它们相等,它应该打印一些东西。我已经看到了一个关于这个的帖子,但它对我不起作用。发帖:How to compare strings in an "if" statement?
代码:
int main(void) {
char string[100];
printf("Please enter something: ");
fgets(string, 100, stdin);
if (strcmp(string, "a") == 0)
printf("a");
else if (strcmp(string, "b") == 0)
printf("b");
else if (strcmp(string, "c") == 0)
printf("c");
else
printf("something else");
return (0);
}
虽然我输入了a,但它会打印“其他内容”。
【问题讨论】:
-
问题很可能是
fgets包含在缓冲区中的换行符。 -
在这种情况下使用字符串文字,您可以简单地使用
memcmp(string, "a", sizeof("a")-1);或类似的。 -
"but it doesn't work at me" --> 正在工作,您正在正确比较字符串并且它们不相等。只是输入的字符串不是你想的那样。
标签: c newline c-strings fgets strcmp