2014-11-08 33 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

相关问题