我正在尝试制作一个测验程序,该程序从一个文件中读取问题,然后从另一个文件中获取答案,将其放入字符串中并与strcmp()
进行比较,但是由于某种原因,当我输入正确的答案时它无法正常工作正确。任何帮助,将不胜感激。
我的密码
int main()
{
FILE *fpq = fopen("questions.txt", "r");
FILE *fpa = fopen("answers.txt", "r");
char question[256];
char answer[256];
char user_input[256];
fgets(question, 256, fpq);
fgets(answer, 256, fpa);
puts(question);
fgets(user_input, 256, stdin);
if(strcmp(user_input, answer) == 0)
{
printf("Good job!\n");
}
else
{
printf("Nope its:\n");
puts(answer);
}
fclose(fpq);
fclose(fpa);
return 0;
}
最佳答案
fgets()
在读取到缓冲区的字符串的末尾添加换行符\n
字符。
请参阅此答案,该答案将进一步解释Is trailing newline necessary in fgets?
也许这是您的代码无法正常工作的原因,请检查字符串末尾的新行并将其删除。
关于删除换行符\n
字符,您可以参考Removing trailing newline character from fgets() input。
此问题也与您的strcmp not working问题相同。这将对您有帮助。
正如Paul Oglive在评论中说的学习使用调试器一样,它将总是有帮助的。