У меня есть функция, которая должна подсчитывать количество строк в файле, введенном пользователем.Однако всякий раз, когда я вводю файл, моя функция продолжает возвращать 0 строк.
int findnum_lines(FILE* fp){
int num_lines = 0;
char line;
int size;
size = ftell(fp);
line = getc(fp);
if(size != 0){
while(line != EOF){
if(line == '\n'){
num_lines = num_lines + 1;
}
line = getc(fp);
}
} else {
num_lines = 0;
}
printf("%d", num_lines);
return num_lines;
}
int main(int argc, char* argv[]){
char** lines = NULL;
int num_lines = 0;
FILE* fp = validate_input(argc, argv);
num_lines = findnum_lines(fp);
read_lines(fp, &lines, &num_lines);
print_lines(lines, num_lines);
free_lines(lines, num_lines);
fclose(fp);
return 0;
}
Мой пример файла:
Hello Class
This is what I would call a normal file
It isn't very special
But it still is important
Таким образом, моя функция должна возвращать 4 строки, а не 0.
ОБНОВЛЕНО:
int findnum_lines(FILE* fp){
int num_lines = 0;
int line;
line = getc(fp);
while(line != EOF){
if(line == '\n'){
num_lines = num_lines + 1;
}
line = getc(fp);
}
printf("%d", num_lines);
return num_lines;
}
int main(int argc, char* argv[]){
char** lines = NULL;
int num_lines = 0;
FILE* fp = validate_input(argc, argv);
num_lines = findnum_lines(fp);
read_lines(fp, &lines, &num_lines);
print_lines(lines, num_lines);
free_lines(lines, num_lines);
fclose(fp);
return 0;
}
С этим обновленным кодом не печатается num_lines.