有没有办法将文件指针设置回当前行的开头

  • 本文关键字:开头 设置 文件 指针 有没有 c
  • 更新时间 :
  • 英文 :


我想使用fscanf检查文件的格式是否正确,如下所示。

fscanf(fp, "%c%d %d %c%d", &ch, &a, &b, &ch2, &c);

使用这个fscanf后,有没有办法让文件指针回到当前行的开头?fseek是一个可能的解决方案吗?如果是,怎么做?

是否有方法将文件指针返回到使用此fscanf后的当前行?fseek是一个可能的解决方案吗?如果那么,怎么做呢?

是的,有!您可以在fscanf之前调用ftell()函数,然后使用fseek恢复到保存的位置:

long int savePos = ftell(fp);                       // save current location
fscanf(fp, "%c%d %d %c%d", &ch, &a, &b, &ch2, &c);  // do the test read
//.. do something to check your input...
fseek(fp, savePos, SEEK_SET);                       // restore position

有关ftell函数的更多信息,请参阅cppreference,但请注意:

对于文本流,数值可能没有意义,但可以仍用于稍后使用将位置恢复到相同位置fseek(如果有使用ungetc放回的字符仍挂起被读取时行为是未定义的(。

相关内容

最新更新