write()函数:将数据写入已经打开的文件内。
头文件:#include
函数原型:ssize write(int fd,const void * buf,size_t count);
fd: 文件描述符。
buf: 定义的缓冲区,是一个指针,指向一段内存。
count: 写入文件的字节数。
返回值:成功返回写入文件的字节数,失败返回-1。
read()函数: 读取指定文件中的文件内容。
头文件:#include
函数原型: ssize read(int fd, void *buf, size_t count);
fd: 文件描述符,读到文件末尾返回0。
buf: 是接收数据的缓冲区。
count: 读取字节数的大小,不能超过buf的大小。
返回值:成功返回实际读取的字节数,失败返回-1。
注意:在写完文件以后读取文件之前,要先关闭文件再重新打开文件,否则会出现错误。
因为写完文件以后文件流指针会指向文件末尾,这时再读取文件就会失败,使用上面的方法就避免了这种情况哦。
示例代码如下:
#include#include #include #include #include #includeint main(int argc, char const *argv[]){int fd;int ret;char buf[32] = "hello world!";char buf2[32] = {0};fd = open("t.txt",O_RDWR|O_APPEND|O_CREAT,0666);if(fd < 0){printf("open file err\n");return 0;}printf("open success\n");ret = write(fd,buf,strlen(buf));if(ret < 0){perror("write:");goto END;}printf("write count= %d\n",ret);close(fd);fd = open("t.txt",O_RDWR|O_APPEND|O_CREAT,0666);ret = read(fd,buf2,32);if(ret < 0){perror("read:");goto END;}printf("read bif2= %s\n",buf2);END:close(fd);return 0;}