此代码用于在文件中查找字符串,然后它将从用户获得输入,在该输入时它将检查它是否匹配。然后它会继续前进并获得下一行,依此类推,但是当我运行这个程序时它会正常工作,除了一些奇怪的原因,行号将保持为1,文件中的最后一个单词将始终有一个输入“Nope”,即使它是正确的。有人能告诉我是什么让最后一个字符串总是不正确吗?
int main()
{
int loop=0;
char str[512];
char string[512];
int score=0;
int line=1;
FILE *fd;
fd = fopen("Student Usernames.txt", "r");
if (fd == NULL)
{
printf("Failed to open file\n");
exit(1);
}
do
{
printf("Enter the string: ");
scanf("%s",string);
for(loop = 0;loop<line;++loop)
{
fgets(str, sizeof(str), fd);
}
printf("\nLine %d: %s\n", line, str);
str[strlen(str)-1] = '\0';
if(strcmp(string,str) == 0 )
{
printf("Match\n");
score=score+2;
}
else
{
printf("Nope\n");
}
}
while(!feof(fd));
fclose(fd);
printf("You scored %d points",score);
getch();
}
答案 0 :(得分:2)
line
保留在1
,因为您永远不会更改它。查看代码。
请注意,这也意味着您的for
循环始终只执行一次。并不是说完全清楚为什么你认为你首先需要一个循环。