栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux对文件读取操作读取不到内容的解决方案(一)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux对文件读取操作读取不到内容的解决方案(一)

Linux下对文件的读取操作

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;
}

执行结果如下:

另外一种解决方案在下一篇进行介绍。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号