c语言打印文本文件的最后n行,如何使用C打印文件的最后n行?

这篇博客讨论了C语言编程中遇到的问题,作者试图编写一个程序,从命令行接收两个参数,读取指定文本文件并打印其最后n行。他们遇到了循环和条件判断的困扰,导致没有输出。博客提到了feof()函数的常见错误用法,并请求帮助找出代码的错误。输入应为任意文本文件,输出应为文件的最后n行。建议使用调试器逐步执行代码以定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我一直在这个代码上一直工作,我似乎无法弄清楚我的代码有什么问题。我试图让程序接受两个命令行参数,第一个是要读取的文本文件的名称,第二个是要打印的文件的行数。我试图制作一个循环来计算行数,并在每次到达新行字符时添加一行,另一个循环打印文本的行,但我遇到了很多麻烦。我只是介绍编程类,这是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);

}

2016-05-29

emmag

+1

[?为什么“而(!FEOF(文件))”永远是错的(http://stackoverflow.com/questions/5431941/why-is- while-feof-file-always-wrong) –

+0

当前程序的问题究竟是什么?请提供投入,预期产出和实际产出。并建议您使用调试器来逐步执行您的程序,以找出事情出错的地方。 –

+0

输入应该是任何带有单词的文件,并且输出应该是文件的最后n行,但是当我使用这个代码时,我根本没有输出,因为我猜因为某种原因它永远不会输入打印每行的循环 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值