我目前正在创建二进制文件。这是我尝试过的。
示例 1:
#include<stdio.h>
int main() {
/* Create the file */
int a = 5;
FILE *fp = fopen ("file.bin", "wb");
if (fp == NULL)
return -1;
fwrite (&a, sizeof (a), 1, fp);
fclose (fp);
}
return 0;
}
示例 2:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char str[256] = {'\0'};
strcpy(str, "3aae71a74243fb7a2bb9b594c9ea3ab4");
fp = fopen("file.bin", "wb");
if(fp == NULL)
return -1;
fwrite(str, sizeof str, 1, fp);
return 0;
}
示例 1 以二进制形式给出了正确的输出。但是我传递字符串的示例 2 没有给我正确的输出。它将我提供的输入字符串写入文件并附加一些数据(二进制形式)。
我不明白,我无法弄清楚我在做什么错误。
最佳答案
问题是sizeof str
是256,也就是本地声明的字符数组的整个大小。但是,您存储在其中的数据不需要全部 256 个字符。结果是写操作写入字符串的所有字符加上字符数组中已经存在的任何垃圾。尝试以下行作为修复:
fwrite(str, strlen(str), 1, fp);
关于在C中创建一个二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810036/