我正在尝试制作一个测验程序,该程序从一个文件中读取问题,然后从另一个文件中获取答案,将其放入字符串中并与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在评论中说的学习使用调试器一样,它将总是有帮助的。

10-06 10:24
查看更多