c 语言将字符串保存至文件,将带有char *字符串的C结构保存到文件中

我正在尝试将带有char *字符串的结构保存到文件中.

struct d_object {

int flags;

int time;

int offset;

char *filename;

};

问题是,当我这样做时,我显然只会保存该指针的地址而不是字符串.所以我所做的只是使用一个字符数组,但我不得不设置字符串的最大大小.这工作正常,但我想知道是否有任何存储结构与文件中的char *(我在某些时候malloc)然后检索它.我可以保存字符串和结构分开,然后检索它们,但它是相当混乱.如果我可以将整个结构(上面的结构)加载并保存到文件中,那将是更好的选择.谢谢!

带有char数组的代码如下:

#include

#include

#include

struct d_object {

int flags;

int time;

int offset;

char filename[255];

};

int main(int argc, char **argv) {

struct d_object fcb;

fcb.flags=5;

fcb.time=100000;

fcb.offset=220;

strncpy(fcb.filename,"myfile",255);

int fd=open("testfile",O_RDWR);

write(fd,&fcb,sizeof(fcb));

close(fd);

int fd2 = open("testfile",O_RDONLY);

struct d_object new_fcb;

read(fd2,&new_fcb,sizeof(new_fcb));

printf("read from file testfile: %s\n",new_fcb.filename);

return 0;

}

P.S.:我没有使用STREAM函数,因为这实际上是指在没有它们的嵌入式操作系统上运行.我刚刚调整了* BSD / Linux的代码,所以在提问时更有意义.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值