这段代码出了什么问题?请帮我

时间:2014-02-03 21:48:05

标签: file

此代码用于在文件中查找字符串,然后它将从用户获得输入,在该输入时它将检查它是否匹配。然后它会继续前进并获得下一行,依此类推,但是当我运行这个程序时它会正常工作,除了一些奇怪的原因,行号将保持为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();

}

1 个答案:

答案 0 :(得分:2)

line保留在1,因为您永远不会更改它。查看代码。

请注意,这也意味着您的for循环始终只执行一次。并不是说完全清楚为什么你认为你首先需要一个循环。