在同一文件流上使用feof两次

时间:2017-03-17 21:34:44

标签: c

我正在使用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

  }

1 个答案:

答案 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>