我是C的新手,我的代码行看起来像这样:
char user[16];
fgets(user,16,stdin);
我在键盘上输入了“zeyang”,我还有另一个代码:
char pwname[1000];
pwname="zeyang";
然后我使用strcmp
来比较用户和pwname:
strcmp(user, pwname);
返回值为负数,我希望它为0,因为它们都是“zeyang”。为什么不是0?
答案 0 :(得分:7)
fgets
包含输入的换行符。您将"zeyang\n"
与"zeyang"
进行了比较。来自fgets(3)
man page:
保留换行符(如果有)。
答案 1 :(得分:2)
来自stdin的第一个字符串包含一个额外的换行符。
答案 2 :(得分:0)
问题是您输入的句子将以换行符终止。 (我猜你在插入完字符后按了ENTER键。:D
在这种情况下,我会使用strncmp:
strncmp(user,pwname,strlen(pwname));
此代码不会比较新行字符。