2011-09-05 48 views
0

我需要打開一個文本文件並讀取它的數據。這個文件中的一個數據點是我需要用來創建數據結構的一個int。使用fscanf()打開文件後,我可以再次讀取它嗎?

問題:一旦我用fscanf()從命令行打開傳入的文件,我可以再次用fscanf()或另一個流讀取函數讀取文件嗎?我曾嘗試通過調用fscanf()然後調用fgetc(),但是我發現首先調用的是唯一一個運行的。

+0

你的問題是錯誤的。 (1)寫「它」,而不是「它」。 (2)fscanf()用於從文件中讀取,而不是打開文件。您應該明確您是從stdin還是從您打開的文件()中讀取數據。 (3)聲稱只有fscanf()和fgetc()運行中的一個是亂碼。你的意思是來自文件的所有數據都被消耗了嗎?請注意,使用fseek()的替代方法是(a)在多個句柄上打開文件,或者(b)重放()文件。 –

回答

4

爲了重新讀取全部或部分打開的文件,您需要重新定位流。

可以使用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; 
    } 
+0

這應該是SEEK_SET,而不是SEEK_CUR。從CUR中移出0將不會移動文件指針... – SoapBox

+0

@Soapbox:oops!謝謝! –

+0

謝謝,我從java生鏽! – lampShade

相關問題