Member 14057945 Ответов: 1

Считывание и подсчет количества строк в текстовом файле


У меня есть 2 структуры typedef, которые я хочу распечатать и подсчитать количество строк. У меня также есть SIGTERM, который копирует то, что находится в структуре, в txt-файл. То, что я пробовал, неправильно. Что мне нужно изменить?

Что я уже пробовал:

void Print(){           
pid_t pid = getpid();
int count = 0;
int count2 = 0;
char c, d, e, f;
FILE *fp, *fc;

kill(pid, SIGTERM);
fp = fopen("pass.txt", "r");
for( c = getc(fp); c != EOF; c = getc(fp)) {
    if(c == '\n') {
        count = count + 1;
    }
}
printf("Number of lines: %d\n", count);
d = fgetc(fp);
while( d != EOF ) {
    printf("%c", d);
    d = fgetc(fp);
}
fclose(fp);
fc = fopen("cond.txt", "r");
for( e = getc(fc); e!= EOF; e = getc(fc)) {
    if(e == '\n') {
        count2 = count2 + 1;
    }
}
printf("Number of lines: %d\n", count2);
f = fgetc(fc);
while(f != EOF) {
    printf("%c", f);
    f = fgetc(fc);
}
fclose(fc);
return 0;
}

1 Ответов

Рейтинг:
0

KarstenK

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

Кстати: а fgets это сделало бы ваш код более понятным и быстрым.

Используйте отладчик, чтобы узнать, что происходит в вашем коде.

Бонус-совет: оберните свои петли в функции.


k5054

Поскольку ОП, по-видимому, интересуется только количеством строк, а не содержимым строк, почему бы не использовать цикл fread() и просто подсчитать количество новых строк в возвращаемой строке?