Для чего нужен
c = getc(fp);
?Моим «предположением» будет то, что вы читаете первый символ слова в c
, а затем secret
пропускает первый символ.
EDIT: Вместо использования getc
дляПроверка EOF, которая, как сказано, повреждает прочитанное слово (и этот цикл while в любом случае является мусором), просто проверьте возвращаемое значение fgets
:
if(fgets(secret, sizeof(secret), fp) == NULL)
//file is empty or other error occurred
и удалите этот бесконечный цикл while(c != EOF)
.
Так что это должно выглядеть примерно так:
FILE *fp = fopen("secret.txt","r");
char guess[10];
const char secret[10];
int i;
if(fgets(secret, sizeof(secret), fp) == NULL)
{
printf("Error while reading file\n");
return -1;
}
fclose(fp);
for (i=0; i < 3; i++)
{
printf("Please guess the word: \n");
scanf("%s", guess);
if (strcmp(secret,guess) == 0)
{
printf("Your guess was correct");
return 0;
}
else
printf("Your guess was incorrect. Please try again\n");
}
return 0;