当前位置: 技术问答>linux和unix
请教read()和write()函数的问题
来源: 互联网 发布时间:2015-08-25
本文导语: 各位大哥,请看下我的程序: int *buf; fd=open("./setup.conf",O_RDWR); lseek(fd,0,SEEK_SET); *buf=45; write(fd,buf,sizeof(int)); read(fd,buf,sizeof(int)); if (*buf==45) g_print("ok"); close(fd); 这段程序编...
各位大哥,请看下我的程序:
int *buf;
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
*buf=45;
write(fd,buf,sizeof(int));
read(fd,buf,sizeof(int));
if (*buf==45)
g_print("ok");
close(fd);
这段程序编译的时候没问题,但运行的时候总出错,难道read()和write()函数只接受char型数组的缓冲区?(一定要把buf设置为char buf[X]?)当我用下面这段程序时不会出错:
char buf[1];
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
buf[0]=4;
write(fd,buf,1);
read(fd,buf,1);
if (buf[0]==4)
g_print("ok");
close(fd);
请各位大哥赐教!万分感谢!!
int *buf;
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
*buf=45;
write(fd,buf,sizeof(int));
read(fd,buf,sizeof(int));
if (*buf==45)
g_print("ok");
close(fd);
这段程序编译的时候没问题,但运行的时候总出错,难道read()和write()函数只接受char型数组的缓冲区?(一定要把buf设置为char buf[X]?)当我用下面这段程序时不会出错:
char buf[1];
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
buf[0]=4;
write(fd,buf,1);
read(fd,buf,1);
if (buf[0]==4)
g_print("ok");
close(fd);
请各位大哥赐教!万分感谢!!
|
你的*buf没有分配空间吧.用hoyt(hoyt(欢迎访问 www.linuxc.net)) 说的办法
int buf;使用的时候用&buf
int buf;使用的时候用&buf
|
int *buf;
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
*buf=45; //没有malloc就直接使用,肯定有错误。
write(fd,buf,sizeof(int));
read(fd,buf,sizeof(int));
if (*buf==45)
g_print("ok");
close(fd);
fd=open("./setup.conf",O_RDWR);
lseek(fd,0,SEEK_SET);
*buf=45; //没有malloc就直接使用,肯定有错误。
write(fd,buf,sizeof(int));
read(fd,buf,sizeof(int));
if (*buf==45)
g_print("ok");
close(fd);