gpt4 book ai didi

C:在二进制文件中写入和读取字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:29 25 4
gpt4 key购买 nike

我想将字符串与许多其他数据一起存储在二进制文件中,我使用下面的代码(当我真正使用它时,字符串将被 malloc'd)我可以写入文件。我在十六进制编辑器中查看过它。我不确定我是否正确地编写了空终止符(或者如果我需要的话)。当我读回时,我得到的字符串长度与我存储的相同,但不是字符串。我做错了什么?

FILE *fp = fopen("mybinfile.ttt", "wb");

char drumCString[6] = "Hello\0";
printf("%s\n", drumCString);
//the string length + 1 for the null terminator
unsigned short sizeOfString = strlen(drumCString) + 1;
fwrite(&sizeOfString, sizeof(unsigned short), 1, fp);

//write the string
fwrite(drumCString, sizeof(char), sizeOfString, fp);

fclose(fp);

fp = fopen("mybinfile.ttt", "rb");

unsigned short stringLength = 0;
fread(&stringLength, sizeof(unsigned short), 1, fp);

char *drumReadString = malloc(sizeof(char) * stringLength);
int count = fread(&drumReadString, sizeof(char), stringLength, fp);

//CRASH POINT
printf("%s\n", drumReadString);

fclose(fp);

最佳答案

你在阅读时做错了。您已经为指针变量放置了 &,这就是它给出段错误的原因。

我删除了它工作正常并正确返回 Hello。

int count = fread(drumReadString, sizeof(char), stringLength, fp);

关于C:在二进制文件中写入和读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415495/

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