2016-01-24 2 views
1

Таким образом, при написании моего кода по какой-то причине при сравнении моего символа в структуре с пользовательским вводом это не так, как истинно, когда это действительно так. Если пользовательский ввод не является тем же.Сравнение символа в структуре с пользовательским вводом

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 места в массиве символов новой строки символов, который соответствует нажатой клавише Enter, если есть достаточно места в строке.

Вы должны удалить этот символ.

Например

fgets(input_login,11,stdin); 
input_login[strcspn(input_login, "\n")] = '\0'; 
Смежные вопросы