gpt4 book ai didi

c - 程序中的 strcmp() 不起作用

转载 作者:行者123 更新时间:2023-11-30 16:50:10 25 4
gpt4 key购买 nike

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

关于c - 程序中的 strcmp() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42314375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com