gpt4 book ai didi

c - 用 C 将字符串写入二进制文件

转载 作者:行者123 更新时间:2023-11-30 19:11:54 25 4
gpt4 key购买 nike

我有一些代码将 char * 写入二进制文件,如下所示:

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);

我得到不同的结果,例如OelloMello。到底是怎么回事?

最佳答案

此代码不正确:

char *str;
fread(str, 6, 1, fp);
printf("Got str: %s\n", str);

char *str; 创建一个未初始化字符指针。它指向的内存在哪里?

char str[ 7 ];
fread(str, sizeof( str ) - 1, 1, fp);
str[ sizeof( str ) - 1 ] = '\0';
printf("Got str: %s\n", str);

会更好,尽管它仍然不检查 ​​fread() 的返回值以确保数据确实被读取。

关于c - 用 C 将字符串写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com