我正在使用feof
计算文件中的行数,如下所示。完成之后,我需要逐行循环遍历同一个文件并执行另一个操作,这取决于知道行数。但是,while (!feof(f))
不会在同一文件流上再次运行。有没有办法将f
重置为开头,以便我可以再次循环它?
while (!feof(f))
{
ch = fgetc(f);
if(ch == '\n')
{
lines++;
}
}
while (!feof(f))
{
//need to do an operation that depends on knowing number of lines from first feof but this loop doesn't run because f is at the end
}
答案 0 :(得分:2)
您寻求的电话是fseek(f, 0, SEEK_SET);
。
具体来说,这会将文件位置设置回文件的开头:
errno
请注意,这可能会失败(例如,如果文件不是普通文件,而是套接字或某些文件),那么您需要检查其返回值,如果它返回-1,则 <style>
tr i.icon-minus-sign { visibility: hidden; }
tr:hover i.icon-minus-sign { visibility: visible; };
</style>