Используйте дополнительные fgets
, чтобы пропустить ненужные строки.
Учитывая х = 2, у = 3 и входной файл:
1 read me
2 read me
3 dont read me
4 dont read me
5 dont read me
6 read me
7 read me
8 dont read me
9 dont read me
10 dont read me
11 read me
12 read me
следующая программа:
#include <stdio.h>
int main ( void )
{
static const char filename[] = "testfile.txt";
int x = 2;
int y = 3;
size_t currentIndex = 0;
FILE *file = fopen(filename, "r");
char line [ 328 ]; /* or other suitable maximum line size */
// until the end of file
int linenumber = 0;
while(!feof(file)) {
// read x lines
for(int i = x; i; --i) {
if (fgets(line, sizeof(line), file) == NULL) break;
++linenumber;
// and print them
printf("READ %d line containing: %s", linenumber, line);
}
// skip y lines
for(int i = y; i; --i) {
// by reading a line...
if (fgets(line, sizeof(line), file) == NULL) break;
++linenumber;
// and discarding output
}
}
fclose(file);
}
производит следующий вывод:
READ 1 line containing: 1 read me
READ 2 line containing: 2 read me
READ 6 line containing: 6 read me
READ 7 line containing: 7 read me
READ 11 line containing: 11 read me
READ 12 line containing: 12 read me