我似乎无法让strcmp正常工作

时间:2013-11-23 18:51:26

标签: c

我正在尝试一些非常简单的事情;将用户输入的字符串与“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");
    }
} 

3 个答案:

答案 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)。

工作正常。