Я постоянно работаю над этим кодом, и я не могу понять, что не так с моим кодом. Я пытаюсь сделать так, чтобы программа принимала два аргумента командной строки, первая из которых была именем текстового файла для чтения, а вторая - количеством строк в файле для печати. Я попытался сделать цикл, который подсчитывает количество строк и добавляет их каждый раз, когда он достигает нового символа линии, и другой цикл, который печатает строки текста, но у меня много проблем. Я только ознакомлен с классом программирования, и это язык C, и я пробовал так много способов сделать эту работу. Вот функция в моем коде, которая должна это сделать. любая помощь будет принята с благодарностью!Как распечатать последние n строк файла с помощью C?
char ch = 0;
long num_lines = 0;
while(!feof(fileequals)){
ch = fgetc(fileequals);
if(ch == '\n'){
num_lines++;
}
}
fseek(fileequals, 0, SEEK_SET);
const int length = 100;
char line[length];
char *c = 0;
long line_count = 0;
if(num_rows_to_read > num_lines){
num_rows_to_read = num_lines;
}
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
line_count++;
}
else{
continue;
}
}while (c != NULL);
}
[? Почему «в то время как (! Feof (файл))» всегда ошибочны] (http://stackoverflow.com/questions/5431941/why-is- while-feof-file-always-wrong) – kaylum
И в чем же проблема с вашей текущей программой? Укажите данные, ожидаемый результат и фактический результат. И предлагаю вам использовать отладчик для перехода через вашу программу, чтобы узнать, где все начинает идти не так. – kaylum
вход должен быть любым файлом со словами в нем, а вывод должен быть последними n строками файла, но когда я использую этот код, я не получаю никакого вывода, потому что по какой-то причине он никогда не входит цикл, который печатает каждую строку – emmag