嘿,伙计们,所以我想写自己的更多'命令,我遇到的问题是如何输出已读取的文件的百分比(如原始'更多'命令)。我能想到这样做的唯一方法是获取文件中的行数,并在每次用户输入命令时进行计算以计算此百分比('输入'键以显示另外的单行一次,'空格键一次显示23行。有一个简单的方法吗?如果没有,任何人都有一个线索,如何进行此计算?谢谢!
编辑:谢谢,我继续使用stat
获取文件大小
struct stat st;
int fileSize;
stat(argv[1], &st);
fileSize = (int)st.st_size;
现在我只需要弄清楚如何获取到目前为止已经读取/输出的字节数,以便我可以计算百分比
2 个答案:
答案 0 :(得分:2)
“stat”文件或打开并寻找最终以字节为单位获取大小,然后简单地跟踪字节输出/总字节数。
C stdio中的所有IO输出函数都会返回写入的数据量。
while((count = write(...)) > 0) {
tot += count;
pct = count * 100 / tot;
}
答案 1 :(得分:1)
如果您想要文件中的行数,则需要预处理整个文件以获取该信息。
如果您想要文件中的字节数,可以从stat
或fstat
获取该信息。