我需要打开一个文本文档并阅读它的数据。此文件中的一个数据点是我需要用来创建数据结构的int。
问题:一旦我用fscanf()打开从命令行传入的文件,我可以用fscanf()或其他流读取函数再次读取该文件吗?我试过通过调用fscanf()然后调用fgetc()来做到这一点,但我发现我首先调用的那个是唯一运行的。
答案 0 :(得分:4)
要重新读取已打开文件的全部或部分内容,您需要重新定位该流。
您可以使用fseek()将文件流重新定位到开头(或其他所需位置):
int fseek(FILE *stream_pointer, long offset, int origin);
e.g。
FILE *file_handle;
long int file_length;
file_handle = fopen("file.bin","rb");
if (fseek(file_handle, 0, SEEK_SET))
{
puts("Error seeking to start of file");
return 1;
}