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时,它不会打印"匹配"。
答案 0 :(得分:0)
使用strcmp(char *s1, char *s2)
来比较字符串。
同时将char *word
更改为char word[]
。
fgets
,就像您使用它一样,从stdin
读取字符,直到它读取新行, 127 字符或 EOF (文件结束)。 新行是word
中读取的字符串的一部分,因此比较不相等。
为了说明,您需要知道C样式字符串是由特殊转义字符\0
结束的字符数组。所以你要比较这两个字符串hello\n\0
和hello\0
;请注意从stdin
读取的字符串中的换行符。
您可以使用\n
覆盖第6个位置的\0
,这样您的字符串就会相等。
更好的通用解决方案是简单地遍历字符串的字符,并将\n
替换为\0
;对你来说这可能是一个很好的练习。
==
不会按照您期望的方式比较字符串。它只是比较两个对象的地址,在这种情况下当然是不同的。
答案 1 :(得分:0)
您需要使用strcmp来比较字符串。
if(strcmp(word, "Hello") == 0)
printf("match\n");