我有一些代码,像这样写一个char *
二进制文件:字符串写入到二进制文件用C
FILE *fp = fopen(path, "wb");
if (fp == NULL) {
printf("Failed to open file at path: %s. %s\n", path, __PRETTY_FUNCTION__);
return;
}
fwrite("Hello", 6, 1, fp);
的问题是,当我再从该文件中像这样写着:
FILE *fp = fopen(path, "rb");
if (fp == NULL) {
printf("Failed to open file at path: %s. %s\n", path, __PRETTY_FUNCTION__);
return;
}
char *str;
fread(str, 6, 1, fp);
printf("Got str: %s\n", str);
我得到不同的结果,例如Oello
或Mello
。到底是怎么回事?
你从来没有设置'char * str'或者我错了吗? –
发布**全部**您的代码。你发布的代码已经读入'id':'fread(id,6,1,fp);'(* maybe * reading - 你不检查返回值...),但是你发出任何内容未初始化的变量'str'指向:'printf(“Got str:%s \ n”,str);' –
对不起,这是一个错字。我正在阅读str变量。该ID来自以前的实现,我改变了str,所以我可以测试出了什么问题。 –