2014-04-02 3 views
0

Моя программа правильно считывает определенную строку из файла, однако она считывает весь файл из строки, которую я указываю далее. Я пытаюсь напечатать только одну строку за раз. Как я могу заставить его просто прочитать одну строку?чтение только одной строки из файла с кодом c

Код:

int main() 
{ 
    int lineNumber = 5; 
    static const char filename[] = "Text.txt"; 
    FILE *file = fopen(filename, "r"); 
    int count = 0; 

    if (file != NULL) 
    { 
    char line[256]; /* or other suitable maximum line size */ 

    while (fgets(line, sizeof line, file) != NULL) /* read a line */ 
    { 
     if (count == lineNumber) 
     { 
      printf("%s", line); 
      //in case of a return first close the file with "fclose(file);" 
     } 
     else 
     { 
      count++; 
     } 
    } 
    fclose(file); 
    } 
} 
+0

Посмотрите ссылку http://rosettacode.org/wiki/Read_a_file_line_by_line –

ответ

1

После того, как вы нашли нужную строку, просто использовать break для выхода из цикла:

if (count == lineNumber) 
{ 
    printf("%s", line); 
    break; 
} 
0
if (count == lineNumber) 
     { 
      printf("%s", line); 
      //in case of a return first close the file with "fclose(file);" 
      count++; 
     } 

count приращение, когда вы получите линию, которую вы укажите, иначе count не будет продолжать указывать следующую строку. Вот почему ваш код напечатал все строки после того, как вы получили указанную вами строку. Потому что номер строки count не будет увеличиваться, как только он станет равен линеексу. поэтому добавьте count++.
Вы можете даже break цикл, так как вам не требуется остальная часть строк для чтения после того, как вы получите указанную строку.

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