【发布时间】:2012-10-29 07:05:05
【问题描述】:
我需要使结构中的数据持久化,即想要将其存储在一个文件中,并且需要逐个字符地读取该数据...为此,我编写了以下代码...以下代码不起作用它无法将结构写入文件(逐个字符)...我需要逐个字符
struct x *x1=(struct x*)malloc(sizeof(struct x));
x1->y=29;
x1->c='A';
char *x2=(char *)malloc(sizeof(struct x));
char *s=(char *)malloc(sizeof(struct x));
for(i=0;i<sizeof(struct x);i++)
{
*(x2+i)=*((char *)x1+i);
}
fd=open("rohit",O_RDWR);
num1=write(fd,x2,sizeof(struct x));
num2=read(fd,s,sizeof(struct x));
for(i=0;i<sizeof(struct x);i++)
printf(" %d ",*(s+i));
我可以使用 fread 和 fwrite...但是我想逐个字符地执行该操作...所以我正在使用 read 和 write(它们是直接系统调用 rite)...我无法将其写入我的write函数显示错误,即返回-1...上面的代码有什么问题吗...
【问题讨论】:
-
如果系统调用(如
read或write)返回-1,则表示有问题。您可以通过查看errno找出什么 错误。 -
我收到错误的文件描述符错误...这是什么意思? @JoachimPileborg
-
请显示您打开文件的方式。
-
fd=open("rohit",O_CREAT,(mode_t)0600);
-
您尚未打开文件进行写入。尝试添加 O_RDWR。另外,请务必检查函数的所有返回值...
标签: c++ c data-structures struct