以二进制格式写入文件时输出错误

时间:2012-03-09 14:18:00

标签: c file io binary fwrite

我试图以二进制格式将一些用户输入写入文件。当我看到文件我期望只看到0和1,但输出到文件是用普通文本打印:

    FILE *f;
    char array[8];
    f = fopen("numbers.bin", "ab+");
    if(f==NULL){
        printf("Could not open file!\n");
        system("pause");
        exit(1);
        }

     for(i=0;i<numberOfInputs;i++){
         printf("\nEnter number nr %i:", i+1);
         gets(array); //get the input and place it in array
         strcat(array, "\n"); // add a newline to the input
         fwrite(array,sizeof(char),1,f); //write output to the file
}

是否有人能够发现我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

你只写一个字符。

...试

fwrite(array,strlen(array),1,f);

这些docs表明第二个参数是要写入的元素的大小,第三个参数是项目的数量。你可以将这两个放在另一个方向,或者放sizeof(char)而不是1(这总是一个)。

请注意,如果用户输入的字符串超过6个字符,那么您将遇到问题 - 因为换行符和空终止符也会占用内存。

答案 1 :(得分:1)

因为您将输入读取为字符串(gets),所以这是以后写入数据的方式。您需要使用scanf来读取数字。

int num;
scanf("%d", &num);
fwrite(&num, sizeof(int), 1, f);