2012-04-21 4 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', 왜 라인이 바로'else' _above_ 확인하지? 아, 그리고 루프를 끝내기 위해'}'가 없습니다. –

+0

admin_menu (puser)를 이동하지 않는 이유는 무엇입니까? 끝까지 ? –

+0

'wd, input));'세미콜론을 제거하면 어딘가에 있습니다. – wildplasser

답변

2

는 admin_menu (puser)가 "다른"전에 다른 문을

91 구문 오류를 좋아하지 않는다; 다른

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

전에 세미콜론은 경우()을 종료 한 다음 바로 다음 줄에 매달려 { 있어요. 활성화 된 if()이 없으면 else은 허용되지 않습니다.

+0

오그 duh .... 그것에 대해 미안 해요, 내가 길게보고되었습니다 – lilvenus

+0

그 문장이 당신에게 맞는 것처럼 보이면 작동 할 것입니다. 사용자가 입력 한 내용과 이미 저장된 내용을 비교하려고합니다. – lilvenus

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

올바른 if 문인지 질문했습니다. 나는 네가 원하는 것을하지 않는다고 말하고 싶다. strcmp()는 두 개의 인수가 일치하면 0을 반환합니다. 또한 두 개의 다른 변수를 동일한 입력 문자열과 비교합니다.

당신은 할 수 있습니다이 양식의 일이 다시 쓰기 :

당신이 usser 입력을 데이터가있는
if(!strcmp(puser->UserName,input_Username) && !strcmp(puser->Pwd,input_Password)) 
{ 
    /* good login */ 
} 
else 
{ 
    /* failed login */ 
} 

, 암호 및 사용자 이름을 그렇게 저장하는 두 개의 별도의 변수를 사용하십시오 하나의 if() 문에서 테스트를 수행 할 수 있습니다.

See strcmp()

관련 문제