2012-04-21 2 views
0

это ошибка, которую я получаю .... я что-то пропустил? я пытался переместить скобки вокруг, но она по-прежнему не нравится другое заявлениеполучение ошибки в моей инструкции if, и я не могу понять, почему

91 синтаксической ошибки, прежде чем «еще»

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'? О, и вам не хватает '}' для завершения цикла. –

+0

Почему вы не будете перемещать admin_menu (puser); до конца? –

+0

'wd, input));' удаление точки с запятой приведет вас куда-нибудь. – wildplasser

ответ

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

Это точка с запятой завершает если(), а затем вы только что получили свисающую { на следующей строке. Без активного if()else не допускается.

+0

omg duh .... извините, что я долго смотрел на это – lilvenus

+0

делает это, если инструкция выглядит правильно для вас, ребята, вроде бы это работает. Я пытаюсь сравнить то, что пользователь вводит в то, что уже хранится – lilvenus

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()

Смежные вопросы