У меня есть эта простая проблема, когда пользователь получает данные, используя функцию, а затем проверяет, равен ли этот вход «паролю».Однако strcmp никогда не вернет желаемое значение, и виновник находится где-то в моем цикле, который использует getch (), чтобы взять каждый символ отдельно и добавить их в массив символов.Я выяснил это, заставив printf отобразить массив символов.Если я введу пароль, функция отобразит его как пароль ". Я понятия не имею, почему закрывающая двойная кавычка и пробел были включены в массив сразу после слова, которое я набрал. Любая идея? Вот код.Спасибо.
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
int validateUser();
int main()
{
for(int x = 0;x<2;x++)
{
if(validateUser())
{
system("cls");
printf("\n\n\t\t** Welcome **"); break;
}
else
{
system("cls");
printf("\n\n\t\tIntruder Alert!");
system("cls");
}
}
system("PAUSE>nul");
return 0;
}
int validateUser()
{
char password[9];
char validate[] = "pass word";
int ctr = 0, c;
printf("Enter password : ");
do
{
c = getch();
if(c == 32)
{
printf(" ");
password[ctr] = c;
}
if(c != 13 && c != 8 && c != 32 )
{
printf("*");
password[ctr] = c;
}
c++;
}while(c != 13);
return (!strcmp(password, validate));
}