[英]strcmp returns unexpected value in C
我是C語言的新手,我的代碼行如下所示:
char user[16];
fgets(user,16,stdin);
我在鍵盤上鍵入“ zeyang”,並且還有另一個代碼:
char pwname[1000];
pwname="zeyang";
然后,我使用strcmp
比較用戶名和pwname:
strcmp(user, pwname);
返回值是一個負數,我希望它是0,因為它們都是“ zeyang”。 為什么不是0?
如果有空間, fgets
包括鍵入的換行符。 您正在將"zeyang\\n"
與"zeyang"
。 在fgets(3)
手冊頁中 :
換行符(如果有)將保留。
來自stdin的第一個字符串包含一個附加的換行符。
問題在於您輸入的句子將以換行符終止。 (我猜您在完成插入字符后按了ENTER。:D
在這種情況下,我將使用strncmp :
strncmp(user,pwname,strlen(pwname));
該代碼不會比較換行符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.