2017-02-11 63 views
-2

我想從閱讀二進制文件,它看起來像浮包含超過4個字節

0000000寫在我的txt文件的價值4.0:046A 6f68 6e03 646f 6500 0000 0140 8000 .john.doe .. .. @ ..

0000010:00

我想這個輸出。

0000000:6a6f 686e 2064 6f65 2031 2034 2e30 0a john doe 1 4.0。

我的問題是寫入浮點值。

char buffer[NAME_MAX]; 
float *gpaPtr; 
float gpaNumber = 0; 

fread(buffer, sizeof(float) , 1, fp); 
gpaPtr = buffer; 
gpaNumber = (float)*gpaPtr; 
printf("%f\n", gpaNumber); 
clearArray(buffer); 

fprintf(fp2,"%s %s %d %f\n" ,firstName, lastName, idNumber,gpaNumber); 

當我使用這段代碼寫入文件時,它就是這樣。

0000000:6a6f 686E 2064 6f65 2031 2034 2e30 3030李四1 4.000000

0000010:3030 300A

我的代碼寫的比我更想。

我用浮子指針指向緩衝器的第一地址和它應該寫浮動的唯一尺寸我認爲(二者gpaPtr和gpaNumber是浮動)

我想這個問題是由32個單精度型和64發生雙精度。

請讓我知道如何才能得到正確的大小gpa以及爲什麼會發生這種情況。

+1

[這'printf'(家庭)的參考可能有助於](http://en.cppreference.com/w/c/io/fprintf)。就像在整個互聯網上使用'printf'的一些教程一樣。 –

+0

嗯......你在哪裏得到'float'值的*文本*十進制表示的長度與'sizeof(float)'有關係的想法?你的'printf'創建一個浮點數的十進制表示,它可能很容易長10,20或100個字符。 'sizeof(float)'與它無關。 – AnT

+0

我用fprint解決了。謝謝 –

回答

相關問題