使用fwrite将结构存储在文件中

 QJ974 发布于 2023-02-09 20:50

我想在文件中存储一个结构.我用过这段代码:

#include 
#include 

typedef struct
{
    int a;
    short b;
    char *ch;
} wrFile;

main()
{
    FILE* fd=fopen("Result.txt","w+");
    wrFile wf={12451,14,"result"};
    fwrite(&wf,sizeof(wrFile),1,fd);
    fclose(fd);
}

我在Result.txt中获得的结果是:

£0^@^@^N^@^@^@^Z^G@^@^@^@^@^@

问题是为什么?

1 个回答
  • w +在linux上是正确的,w + b只在windows上需要.但我想OP希望"12451, 14,在文件中看到类似结果的东西,并且为什么他不这样做而感到困惑.

    fwrite()以二进制形式直接写入数据,旨在fread()以后读取,不打算被人类读取.

    你的12451,作为一个4字节整数,十六进制,是00 00 30 a3.当intel处理器以小端格式存储数据时,它将被写入文件中a3 30 00 00.这正是我们所看到的 - 你的前4个字符是井号,其十六进制代码为A3,下一个是0,(30十六进制),然后是2个零字节.与14相同.

    由于你的ch是一个指针,所以指针被写入,而不是它指向的字符串("result").

    2023-02-09 20:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有