Linux文件操作——写入及读取

Linux文件操作——写入及读取附加参数解读 调用该函数时 只需将需要关闭文件的文件描述符 fd 传进来即可实现关闭

大家好,欢迎来到IT知识分享网。

目录

写入(write)

write的函数定义格式

函数定义的参数解读

函数返回值

代码示例

读取(read)

read的函数定义格式

函数定义的参数解读

函数返回值

代码示例


写入(write)

使用write函数需要包含以下头文件:

#include <unistd.h>

write的函数定义格式

ssize_t write(int fd, const void *buf, size_t count);

附加:一般将数据写入文件中后需关闭文件,这里需要调用关闭(close)函数,其包含的头文件与写入函数一样,函数定义格式也比较简洁,如下:

int close(int fd);

参数解读:调用该函数时,只需将需要关闭文件的文件描述符fd传进来即可实现关闭

函数定义的参数解读

int fd:fd为创建文件的文件描述符
const void *buf:这里为无类型的指针,通常对他进行强转成字符串:buf为要写入的字节
size_f count:写入字节的长度

整体流程:从定义的buf中写入count个字节并传到文件描述符fd对应的文件

函数返回值

写入成功后会返回写入字节的个数(整型数);写入失败会返回-1

代码示例

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <string.h> int main() { int fd; char *buf = "Hello Word";//将无类型指针强制转换并输入字节 fd = open("./file1",O_RDWR); if(fd == -1) { printf("open file1 failed\n"); fd = open("./file1",O_RDWR|O_CREAT,0600); if(fd > 0) { printf("creat file1 success\n"); } } printf("open success:fd = %d\n",fd); write(fd,buf,strlen(buf)); close(fd); return 0; }

注意:这里计算字符串长度最好用strlen,它能计算出字符串的有效长度,而这里的buf是char型指针,如果用sizeof只能计算出char型在系统中的长度(8个字节),若输入的字符串超过8位,那么使用sizeof只能输入前8位。

Linux文件操作——写入及读取

Linux文件操作——写入及读取

读取(read)

使用读取函数时需包含以下头文件

#include <unistd.h>

read的函数定义格式

ssize_t read(int fd, void *buf, size_t count);

函数定义的参数解读

int fd:fd为创建文件的文件描述符
const void *buf:这里为无类型的指针,通常对他进行强转成字符串:buf为要读取的字节
size_f count:读取字节的长度

整体流程:从文件描述符fd读取count个字节的数据传到buf的缓冲区中

函数返回值

读取成功后会返回读取字节的个数(整型数);读取失败会返回-1

代码示例

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int fd; char *buf = "Hello Word"; fd = open("./file1",O_RDWR);//文件删除,文件描述符返回值为-1 if(fd == -1) { printf("open file1 failed\n"); fd = open("./file1",O_RDWR|O_CREAT,0600);//重新建立一个file1,此时文件描述符返回值大于0 if(fd > 0) { printf("creat file1 success\n"); } } printf("open success:fd = %d\n",fd); int n_write = write(fd,buf,strlen(buf));//定义一个整型变量存放write返回的文件描述符的值(写入字节个数) if(n_write != -1) { printf("write %d byte to file1\n",n_write); } close(fd);//由于光标问题,写完之后光标在最后面 此时read从光标位置开始读取,并不会读取写入文件中的字符串,需关闭文件并重新打开 fd = open("./file1",O_RDWR); char *readBuf; readBuf = (char *)malloc(sizeof(char)*n_write+1);//对指针进行开辟内存空间,其读取的字节数为写入的字节数,其大小为char型,可用写入字节个数乘以char的值即为读取个数,此时存放的是字符串 int n_read = read(fd,readBuf,n_write);//定义一个整型变量存放read返回的文件描述符的值(读取字节个数) printf("read byte is %d,context is %s\n",n_read,readBuf); close(fd); return 0; } 

Linux文件操作——写入及读取

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128617.html

(0)
上一篇 2025-08-30 15:15
下一篇 2025-08-30 15:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信