2014-02-03 4 views
-3

Этот код создан, чтобы найти строку в файле, после чего будет получен вход от пользователя, после этого ввода он проверяет, соответствует ли он. Затем он продолжит работу и получит следующую строку и т. Д. Однако, когда я запустил эту программу, она будет работать нормально, за исключением некоторой нечетной причины, номер строки останется на одном, а последнее слово в файле всегда будет иметь ввод «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

Отступ, для начала. –

+0

да, я получаю это много, но никто никогда не говорит, как это сделать правильно – user3267267

+0

Отступ как минимум 4 места для каждого блока. Жалоба была сделана, потому что весь ваш код работает по левому краю. –

ответ

2

line остается на 1, потому что вы никогда не измените его. Просмотрите код.

Обратите внимание, что это также означает, что цикл for всегда выполняется ровно один раз. Не то, чтобы совершенно ясно, почему вы считаете, что вам нужна петля в первую очередь.

Смежные вопросы