我试图以二进制格式将一些用户输入写入文件。当我看到文件我期望只看到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
}
是否有人能够发现我在这里做错了什么?
答案 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);