当前位置: 技术问答>linux和unix
又是读写文件的问题,写进去读不出来
来源: 互联网 发布时间:2016-04-04
本文导语: 写进去,write返回68个字节,可是用ls -l察看文件,发现文件大小是0 read返回为0,当然啥也没读出来。 代码如下,大家帮忙看看吧,被读写文件的问题弄得头大,纠缠两天了。 #include #include #include #include #include...
写进去,write返回68个字节,可是用ls -l察看文件,发现文件大小是0
read返回为0,当然啥也没读出来。
代码如下,大家帮忙看看吧,被读写文件的问题弄得头大,纠缠两天了。
read返回为0,当然啥也没读出来。
代码如下,大家帮忙看看吧,被读写文件的问题弄得头大,纠缠两天了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct {
char name[64];
int id;
} Shortcut;
int main()
{
int fd;
int wrnum,rdnum;
Shortcut *wangli=(Shortcut *)malloc(sizeof(Shortcut));
Shortcut *buf=(Shortcut *)malloc(sizeof(Shortcut));
wangli->id=10;
sprintf(wangli->name,"我的书");
printf("sizeof wangli's name is %d,%sn",sizeof(wangli->name),wangli->name);
fd = open("./shortcut",O_RDWR|O_CREAT| O_TRUNC);
if(fd==-1)
printf("open failedn");
printf("fd is %dn",fd);
wrnum=write(fd,wangli,sizeof(Shortcut));
if(wrnum>0)
printf("write %dn",wrnum);
close(fd);
int fd1;
fd1=open("./shortcut",O_RDWR|O_TRUNC);
if(fd1==-1)
printf("open failedn");
printf("fd1 is %dn",fd1);
rdnum=read(fd1,buf,sizeof(Shortcut));
printf("readnum= %dn",rdnum);
//printf("%sn",buf->name);
printf("%dn",buf->id);
free(buf);
free(wangli);
return 0;
}
|
第二次打开文件的时候不要用O_TRUNC选项,改成这样:fd1=open("./shortcut",O_RDWR);
否则会将文件的内容清空。
否则会将文件的内容清空。
|
打开文件时不要使用 O_TRUNC 看看吗?
|
第二次读的时候不要加O_TRUNC
你觉得读的有问题,把写的代码注释掉不就知道了
你觉得读的有问题,把写的代码注释掉不就知道了
|
第二次打开文件的时候不要用O_TRUNC选项,嗯!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。