2016-01-24 105 views
1

因此,當將結構中的字符與用戶輸入進行比較時由於某種原因編寫代碼時,它在實際應用時不會傳遞爲true。除非用戶輸入不一樣。將結構中的字符與用戶輸入進行比較

struct user 
{ 
    char login[11]; 

}; 

int main() 
{ 
    char input_login[11]; 
    struct user goku; 
    strcpy(goku.login,"goku"); 
    printf("Please enter the login:"); 
    fgets(input_login,11,stdin); 

    printf("Please enter the password:"); 
    fgets(input_password,11,stdin); 

    if (strcmp(goku.login, input_login) == 0) // not working 
    { 
     printf("correct"); 
    } 
    else 
    { 
     printf("%s",goku.login); 
    } 
    return 0; 
} 
+1

'與fgets()'葉在字符串的末尾的換行符(如果讀出的整行)。你需要去掉它(用一個空字符替換它),或者在你檢查的字符串的末尾添加一個換行符 - 然後'strcmp()'應該可以工作。 – Dmitri

回答

1

功能fgets地方字符數組中對應於按下回車鍵,如果有是字符串中有足夠的空間換行字符。

你應該刪除這個字符。

例如

fgets(input_login,11,stdin); 
input_login[strcspn(input_login, "\n")] = '\0'; 
相關問題