Linux 新手上路之文件编程read函数——by热心市民ly

今天我们来说一下linux下文件读取操作常用的API,read函数,还是一样我们先看man手册查看函数用法以及头文件

Linux 新手上路之文件编程read函数——by热心市民ly_第1张图片

大家都看得出来read函数从文件描述符指向的文件 读出count个字节放入buf中,如果读取成功返回你所读的字节个数,失败的话返回-1;这里要注意如果read函数读到文件尾部返回值为0。

话不多说我们来练习一下read函数的使用方法;首先我们cp一下上次的write函数代码来修改

 

我们这次定义一个整型数n_write用来接收write函数的返回值,如果成功我们打印我们所写入文件的个数,然后我们在定义一个readbuf用于read函数接收存放数据,为了防止野指针用malloc强转,并用n_read接收read函数的返回值然后打印我们所读出的个数和内容。不知道大家能不能看出些小问题?

Linux 新手上路之文件编程read函数——by热心市民ly_第2张图片 

给大家看一下程序执行的结果 

Linux 新手上路之文件编程read函数——by热心市民ly_第3张图片 

为什么显示读取个数是0呢,而且没有显示内容。其实答案很简单,linux文件操作还有一个光标的概念,当我们每写入一个数我们的光标就会向后移一格,就好像我们打字一样,当我们完成写入操作的时候光标自然在我们文件的末尾,而我们调用read函数去读文件时,光标后面并没有内容自然读取个数是0,内容也什么都没有。那我们怎么把光标移到开头呢。给出两种方法:1.关闭文件重新打开。2.用lseek函数移动光标。今天我们先用方法一,明天将一下lseek

Linux 新手上路之文件编程read函数——by热心市民ly_第4张图片

可以看到这次我们在写入之后close了一下然后再次open才read,那结果肯定对了鸭

Linux 新手上路之文件编程read函数——by热心市民ly_第5张图片 

小伙伴们今天你们学会了吗?会了请留言扣个6 

你可能感兴趣的:(Linux 新手上路之文件编程read函数——by热心市民ly)