linux下对文件的读取操作,像下面这样会读取不到内容,原因就是光标已经到内容的最后,再进行读取就会读不到内容。
运行结果如图所示:
代码如下:
#include#include #include #include #include #include #include int main() { int fd; char *buf="I love you the way you are!n"; fd=open("./file1",O_RDWR); if(fd==-1){ printf("open file1 failedn"); fd =open("./file1",O_RDWR|O_CREAT,0600); if(fd>0){ printf("create file1 success!n"); } } printf("open success: fd=%dn",fd); //ssize_t write(int fd,const void *buf,size_t count); int n_write=write(fd,buf,strlen(buf)); if(n_write!=-1){ printf("Write %d bytes to file1n",n_write); } char *readBuf; readBuf=(char*)malloc(sizeof(char)*n_write+1); //ssize_t read(int fd,void *buf,size_t count); int n_read=read(fd,readBuf,n_write); printf("read %d ,context:%sn",n_read,readBuf); close(fd); return 0; }
解决方式一便是关闭文件然后重新打开,这样光标就会回到开始,然后就可以进行内容的读取操作了。修改后的代码如下:
#include#include #include #include #include #include #include int main() { int fd; char *buf="I love you the way you are!n"; fd=open("./file1",O_RDWR); if(fd==-1){ printf("open file1 failedn"); fd =open("./file1",O_RDWR|O_CREAT,0600); if(fd>0){ printf("create file1 success!n"); } } printf("open success: fd=%dn",fd); //ssize_t write(int fd,const void *buf,size_t count); int n_write=write(fd,buf,strlen(buf)); if(n_write!=-1){ printf("Write %d bytes to file1n",n_write); } //以下是修改的代码 close(fd); fd=open("./file1",O_RDWR); //以上是修改的代码 char *readBuf; readBuf=(char*)malloc(sizeof(char)*n_write+1); //ssize_t read(int fd,void *buf,size_t count); int n_read=read(fd,readBuf,n_write); printf("read %d ,context:%sn",n_read,readBuf); close(fd); return 0; }
执行结果如下:
另外一种解决方案在下一篇进行介绍。



