红联Linux门户
Linux帮助

如何将结构体数组写入一个文件,并读出第二个,现在read总是出参数不对的错误

发布时间:2011-10-22 16:45:44来源:红联作者:zs5577517
#include
#include
#include
#include
#include
#define BIZ_SIZ 100
#define FPATH "./students"
typedef struct
{char name[10];
int num;
}DATE;
int swrite(int n,DATE p[])
{ int x,i=0;
if (-1==(x=write(n,p,sizeof(DATE)*3)))
{perror("write");
return -1;
}
return x;
}
int sopen(void)
{
int k;
k=open(FPATH,O_RDWR|O_CREAT|O_TRUNC,0666);
if (-1==k)
{
perror("open");
return -1;
}
printf("File creat sucess!:%d\n",k);
return k;


}
int sread(int n)
{ DATE buf;
int m;
lseek(n,SEEK_SET,sizeof(DATE));
if (0==(m=read(n,buf,sizeof(DATE))))
{perror("read");
return -1;
}
printf("%s\n",buf.name);
printf("%d\n",buf.num);


return m;
}
int main(int argc, char *argv[])
{
DATE a[3]={{"xiaomi",9527},{"liaoli",9528},{"siaoer",9529}};
int n;
char buff[BIZ_SIZ]={0};
printf("%d\n",sizeof(DATE));;
printf("%d\n",sizeof(a));
n=sopen();
printf("%d BYTES was write\n",swrite(n,a));
printf("The 2nd struct is:%d\n",sread(n));
}
文章评论

共有 2 条评论

  1. Trahea 于 2011-10-23 08:56:11发表:

    2# zs5577517


    呵呵~

  2. zs5577517 于 2011-10-22 17:07:34发表:

    犯傻了。。read参数写反了。。悲剧了一下午