0
我一直在这个代码上一直工作,我似乎无法弄清楚我的代码有什么问题。我试图让程序接受两个命令行参数,第一个是要读取的文本文件的名称,第二个是要打印的文件的行数。我试图制作一个循环来计算行数,并在每次到达新行字符时添加一行,另一个循环打印文本的行,但我遇到了很多麻烦。我只是介绍编程类,这是C语言,我尝试了很多方法来完成这个工作。这是我的代码中应该这样做的功能。任何帮助将不胜感激!如何使用C打印文件的最后n行?
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