2014-11-17 27 views
0

我寫使用以下調用了3個整數文件到fprintf寫3個整數文件並恢復他們回來使用fprintf和的fscanf

FILE* fid = fopen("c:\\a.bin", "wb");  
a = fprintf(fid, "%d", 2); 
b = fprintf(fid, "%d", 576); 
c = fprintf(fid, "%d", 5); 
fclose(fid); 

然後我試圖回到使用下面的調用讀3個整數:

int a, b, c; 
a = b = c = 0; 
FILE* fid = fopen("c:\\a.bin", "rb"); 
fscanf(fid, "%d%d%d", &a, &b, &c); 

調用的fscanf這些值之後,b和c是25765,分別爲0和0。我怎樣才能恢復我的號碼?爲什麼fprintf的調用只寫入5個字節而不是12個?

+3

分界符是必需的。 – BLUEPIXY

+1

你可以顯示你用來從文件中讀取的代碼..? –

+1

1.你可能意思是「...調用fprintf' ...」; 2.您可能需要打開文件進行寫入,而不是二進制寫入,所以使用''w「'而不是''wb」'; 3.'fscanf'總是返回一個整數,它是一個錯誤檢查代碼。你最好從文件發佈代碼讀取,所以我們可以幫助你。 –

回答

1

如果要編寫二進制整數,則不應使用fprintf(),即打印,即將內存中的數據轉換爲可讀形式。

你應該只是做一些fwrite() S,即:

const int two = 2; 

fwrite(&two, sizeof two, 1, fid); 

然後讀回用fread(),從文件打開,當然二進制讀。另外,請檢查I/O呼叫的返回值。

相關問題