我正在尝试一些非常简单的事情;将用户输入的字符串与“hello”进行比较,但strcmp不想工作。我知道我错过了一些明显的东西,我认为这与我宣布我的字符串的方式有关。非常感谢所有帮助。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
char command[4555], compare[] = "hello";
fgets (command, sizeof (command), stdin);
printf ("%s\n%s\n", command, compare);
if (strcmp (command, compare) == 0)
{
printf ("The strings are equal");
} else {
printf ("The strings are not equal");
}
}
答案 0 :(得分:3)
fgets
会将换行符保留在缓冲区中,然后null命令将终止,而命令将没有换行符,只能为空终止。
答案 1 :(得分:1)
通过使用fgets,您可以在字符串中的'\ 0'前添加'\ n'。 使用:
if(command[strlen(command)-1]=='\n')
command[strlen(command)-1]='\0';
您将删除它并有效地比较您的字符串
答案 2 :(得分:1)
好吧,只是为了添加一些内容,是的,fgets会在输入字符串中添加一个'\ n'字符。
因此,最好使用strncmp函数,它也在同一个库中。
strncmp(command,compare,strlen(command)-1)。
工作正常。