我需要打開一個文本文件並讀取它的數據。這個文件中的一個數據點是我需要用來創建數據結構的一個int。使用fscanf()打開文件後,我可以再次讀取它嗎?
問題:一旦我用fscanf()從命令行打開傳入的文件,我可以再次用fscanf()或另一個流讀取函數讀取文件嗎?我曾嘗試通過調用fscanf()然後調用fgetc(),但是我發現首先調用的是唯一一個運行的。
我需要打開一個文本文件並讀取它的數據。這個文件中的一個數據點是我需要用來創建數據結構的一個int。使用fscanf()打開文件後,我可以再次讀取它嗎?
問題:一旦我用fscanf()從命令行打開傳入的文件,我可以再次用fscanf()或另一個流讀取函數讀取文件嗎?我曾嘗試通過調用fscanf()然後調用fgetc(),但是我發現首先調用的是唯一一個運行的。
爲了重新讀取全部或部分打開的文件,您需要重新定位流。
可以使用fseek()文件流重新定位到開始(或其它期望的位置):
int fseek(FILE *stream_pointer, long offset, int origin);
例如
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;
}
你的問題是錯誤的。 (1)寫「它」,而不是「它」。 (2)fscanf()用於從文件中讀取,而不是打開文件。您應該明確您是從stdin還是從您打開的文件()中讀取數據。 (3)聲稱只有fscanf()和fgetc()運行中的一個是亂碼。你的意思是來自文件的所有數據都被消耗了嗎?請注意,使用fseek()的替代方法是(a)在多個句柄上打開文件,或者(b)重放()文件。 –