2012-04-21 147 views
0

這是我得到的錯誤....我錯過了什麼?我試圖走動括號,但它仍然沒有之前的「其他」得到我的if語句錯誤,我不明白爲什麼

void admin_signIn(struct profile *puser) 
{ 
    int i=0; 
    char input[20]; 
    strncpy(puser->UserName, "password", strlen("admin")+1);  
    strncpy(puser->Pwd, "password", strlen("password")+1); 
    for(i=0;i<3;i++) 
    { 
    printf("Enter admin user name:"); 
    fgets(input,10,stdin); 
    rewind(stdin);  
    printf("Enter admin password:"); 
    fgets(input,10,stdin); 
    rewind(stdin); 

    if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input)); 
     { 
     printf("the user name is good"); 
     } 
     admin_menu(puser); 
    else 
     { 
     printf("try again"); 
     } 
} 
+0

如果收到有關消息'else',爲什麼不檢查線路只是_above_了'else'?哦,你錯過了一個'}'來結束循環。 – 2012-04-21 16:00:58

+0

你爲什麼不移動admin_menu(puser); 到底? – 2012-04-21 16:01:04

+0

'wd,input));'去掉分號會讓你在某個地方。 – wildplasser 2012-04-21 16:03:58

回答

2

有一個admin_menu(puser)喜歡else語句

91語法錯誤;否則

5
if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input)); 
                   ^---here 

在此之前分號終止,如果(),然後你拿到下一行一個叼着{。如果沒有活動的if(),則不允許使用else

+0

omg duh ....對不起,我一直在看這個很長 – lilvenus 2012-04-21 16:07:32

+0

這是否如果陳述看起來是正確的你們,就像它會工作我試圖比較用戶輸入什麼已存儲 – lilvenus 2012-04-21 16:47:01

0
if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input)) 

你問這是否是一個正確的if語句。我會說它不會做你想做的。 當兩個參數匹配時,strcmp()返回0。此外,您正在比較兩個不同的變量到同一個輸入字符串。

你可能要重新寫這這種形式的東西:

if(!strcmp(puser->UserName,input_Username) && !strcmp(puser->Pwd,input_Password)) 
{ 
    /* good login */ 
} 
else 
{ 
    /* failed login */ 
} 

當您遇到的usser輸入數據時,一定要使用兩個獨立的變量來存儲密碼和用戶名,以便你可以在一個if()語句中進行測試。

See strcmp()

相關問題