2010-08-05 2 views
0

У меня есть файл, где мне нужно прочитать данные и сохранить их в структуре.Как читать из файла, кроме последней строки в C?

10001 john 
10002 david 
10003 randy 
10/10/2010 15:50:55 Updated by : Name 

теперь для указанного выше файла мне нужно прочитать данные из «10001» & «сортир» до «10003» & «Randy», за исключением последней строки (конец файла).

Как это сделать в C?

Обновление: последняя строка будет динамичной.

+1

Поиск google и сохранение времени. Благодарю. –

+0

Вот почему ваша последняя строка могла быть первой строкой. Тогда больше нет проблем. – Wok

+0

Guillaume: И здесь я думал, что stackoverflow.com предназначался для программирования связанных вопросов. Я ошибаюсь? – manneorama

ответ

0

читать по строкам. Когда вы получите EOF, отбросьте последнюю строку.

Edit:

while (fgets(line, length, file) && !feof(file)) 
{ 
    /* process the line */ 
} 
+0

может помочь мне как отказаться от последней строки. – Guru

+1

Мое слово, как лениво этот парень? – Konrad

+2

'while (fgets (строка, длина, файл) &&! Feof (файл)) {/ * обрабатывать строку * /}' – adf88

0

Что бы вы сделали, если файл не имел, что последнюю строку? Предположительно в каком-то виде, прочитайте каждую строку и сохраните ее.

Вы можете просто добавить «if» перед сохранением, проверяя соответствие линии «Конец файла».

Как правило, с такими проблемами разбивайте проблему на бит, которые вы можете понять. Затем соединяет биты вместе.

Вы также можете рассмотреть то, что вы должны делать, если файл выглядит

10001 john 
10002 david 
Silly line in middle of file 
10003 randy 
End of the file 
10003 mr unexepected 

Вашего приложение должно быть устойчивыми к странному входу.

+0

Также рассмотрите пустые строки, особенно в конце файла. – adf88

0
char line[81]; 
FILE *f=fopen("file","rt"); 

while(fgets(line,sizeof line,f)) 
{ 
int tag1; 
char tag2[81]; 
if(2==sscanf(line,"%d%80s",&tag1,tag2)) 
{ 
/* do anything */ 
} 
} 
0
int id; 
char name[80]; 

FILE *fp = fopen("data.txt", "r"); 

while (fscanf(fp, "%d%s[^n]", &id, name) == 2) 
{ 
    /* do something with id and name */ 
} 

Вам не нужно читать строку, а затем получить данные из него. Вместо этого просто прочитайте необходимые данные из файла напрямую.

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