2014-11-08 32 views
0

我想用C語言將一些數據寫入二進制文件。顯然,函數fwrite似乎不能正常工作。這是代碼:爲什麼fwrite對C中的二進制文件不起作用?

typedef struct tw { 
    char name[40]; 
    char tweet[150]; 
    int rt, like; 
} Twitter; 

void createFile() { 
    FILE *bin; 
    Twitter user; 
    if (bin = fopen("test.bin", "wb") == NULL) { 
     printf("Error"); 
     return 0; 
    } 
    strcpy(user.name, "name"); 
    strcpy(user.tweet, "this is a tweet"); 
    user.rt=5; 
    user.like=10; 

    fwrite(&user, sizeof(Twitter), 1, bin); 

    fclose(bin); 

} 

fwrite函數沒有寫入任何東西到文件中,我在代碼中查找錯誤,但我找不到任何。另外,當我試圖使用該函數寫入一個txt文件時,它正常工作。

+0

'返回0'應該是'return',因爲它是一個'void'功能。 – Barmar 2014-11-08 19:30:14

+1

並閱讀你的編譯器警告。他們指出你的代碼中的所有問題。 – Barmar 2014-11-08 19:30:33

回答

3

您需要更改

if (bin = fopen("test.bin", "wb") == NULL) 

if ((bin = fopen("test.bin", "wb")) == NULL) 
+0

你應該解釋爲什麼原始代碼不起作用,即它是如何分組的。 – Barmar 2014-11-08 19:31:20

+0

由於'=='比'='具有更高的前導性,所以'bin'不會被設置爲文件指針,而是被設置爲0或1,這是'=='比較的結果。如果文件被成功打開,'fopen()!= NULL',所以'bin == 0'因此跳過錯誤報告。然而,OP然後試圖用文件指針值爲0或NULL來調用'fwrite()'。 – 2014-11-08 19:49:02

相關問題