簡體   English   中英

strcmp在C中返回意外值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM