C读取行为字符串

时间:2016-02-10 02:53:47

标签: c

char *word[128];
fgets(word, 128, stdin);
if(word == "hello")
    printf("You entered hello as your word."); 

所以基本上我试图将用户输入作为字符串,然后使用以下比较,以查看用户输入的字符串是否等于" hello"。但是,在编译此代码时,它不起作用。我做错了什么?

编辑:所以根据反馈到目前为止,这就是我所拥有的:

char word[128];
fgets(word, 128, stdin);
if(strcmp(word, "Hello") == 0)
     printf("match\n");

但是,当我编译并运行此程序并输入Hello时,它不会打印"匹配"。

2 个答案:

答案 0 :(得分:0)

使用strcmp(char *s1, char *s2)来比较字符串。 同时将char *word更改为char word[]

fgets,就像您使用它一样,从stdin读取字符,直到它读取新行 127 字符或 EOF (文件结束)。 新行是word 中读取的字符串的一部分,因此比较不相等。

为了说明,您需要知道C样式字符串是由特殊转义字符\0结束的字符数组。所以你要比较这两个字符串hello\n\0hello\0;请注意从stdin读取的字符串中的换行符。

您可以使用\n覆盖第6个位置的\0,这样您的字符串就会相等。
更好的通用解决方案是简单地遍历字符串的字符,并将\n替换为\0;对你来说这可能是一个很好的练习。

==不会按照您期望的方式比较字符串。它只是比较两个对象的地址,在这种情况下当然是不同的。

答案 1 :(得分:0)

您需要使用strcmp来比较字符串。

if(strcmp(word, "Hello") == 0)
  printf("match\n");