gpt4 book ai didi

c - 如何将结构体写入文件

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

所以我对 c 相当陌生,想将一个结构写入一个文件,以便人类可读,我不必重新打开并从该文件中读取。

int main(int argc, char const *argv[])
{
uint64_t lol[8] = {125,95687445,54778,84585,5745,45874,845,1111};
Cool ben = {.name =
"vOWRrwxCzuEyishGjHkVKboNBMUdIfhTJZLqeAgDPFcQYSatnm", .other= *lol,
.args = 1};
writeToFile(& ben);

return 0;

}

typedef struct {

uint64_t other[8];
uint8_t args;
char name[40];
} Cool;

void writeToFile(Cool* reading){
char * filename = "anicename";
Cool ben = * reading;
FILE * open;
open= fopen(filename,"wt");
if (open== NULL ){
exit (-1);
}

fwrite (&ben.name , sizeof(char),sizeof(ben.function_name),open);
fwrite (&ben.other , sizeof(uint64_t),sizeof(ben.arguments),open);
fwrite (&ben.args , sizeof(uint64_t),1,open);

fclose (opening);
}

如果名称不存在,我还希望它创建一个新文件,如果名称存在,它不会覆盖该文件,而是附加现有文件。数组并不总是满的,所以我不希望它将空指针打印到文件中。这给出了

vOWRrwxCzuEyishGjHkVKboNBMUdIfhTJZLqeAgDPFcQYSatnm} úLöý àýf I@ €ýf gðïøý 8 LA9K vOWRrwxCzuEyishGjHkVKboNBMUdIfhTJZLqeAgDPFcQYSatnm } } ´ úÕ iJ q 2³ M W v@ À ø@ €y@ xz´N3

所以不太有用谢谢帮助

最佳答案

write a struct to a file so it is human readable,

将每个struct成员写为明文。可以使用类似格式的标记结构。

fprintf(open, "(Cool\n";
fprintf(open, " (other"
for (i = 0; i< 8; i++) {
fprintf(open, " %" PRIu64, ben.other[i]);
}
fprintf(open, ")\n");
fprintf(open, " (args %" PRIu8 ")\n", ben.args);
fprintf(open, " (name \"%.*s\")\n", (int) sizeof ben.name, ben.name);
fprintf(open, ")\n";

附加代码可以独特地处理 .name 中的特殊字符,例如不可打印的字符、") 等。

关于c - 如何将结构体写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52953408/

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