文件操作之文件IO
main函数
函 数 详 情 | main函数的格式: int main(int argc,char *argv[]); 例如:运行:./a.out 标准格式进行解释:这有两个参数,运行时候生效, argc表示运行时参数个数(注意:包含可执行程序本身), argv[]表示运行时各个参数指针(作用--指向字符串首地址,就是识别字符串) 例子:./main buf[]=”hello”; |
示 例 | //输出一下argc printf("argc = %d\r\n",argc); //输出argv printf("argv[%d]=%s\r\n",i,argv[i]); |
open打开文件,获取文件描述符fd
函 数 详 情 | 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型: int open(const char *pathname,int flags); int open(const char *pathname,int flags,mode_t mode); 参数: const char *pathname 确定待打开文件的路径 例如: “./1.txt” int flags 确定打开的方式 O_RDONLY/O_WRONLY O_RDWR(可读可写) mode_t mode 设置权限值 例如: 0664 返回值:成功,返回对应文件的文件描述符fd 失败 -1 功能:打开文件,并为文件分配一个文件描述符 |
示 例 | //调用对应的OPEN函数 fd=open("./1.txt",O_RDWR); if(fd < 0) { printf("open error\r\n"); return -1; } //打开目标文件 fd2=open(argv[2],O_RDWR|O_CREAT,0644);//O_CREAT文件不存在,创建,同时要赋予权限 |
close关闭文件描述符
函 数 详 情 | 头文件: #include <unistd.h> 原型:int close(int fd) 参数:int fd 表示关闭对应的文件的文件描述符 返回值:成功 返回0 失败 返回-1 功能:关闭一个文件的文件描述符 |
示 例 | i=close(fd); if(i == 0) { printf("fd is exit success\r\n"); } |
write往文件或终端里面写数据
函 数 详 情 | 头文件:#include <unistd.h> // ssize_t 代表就是int类型 原型:ssize_t write(int fd,const void *buf,size_t count); 参数: int fd; 表示文件的描述符 const void *buf; 表示缓存空间的地址 这个buf是用来保存数据的 size_t count; 表示期望写入的长度 返回值:成功 返回实际写入长度 失败 返回-1 功能:将数据从缓存空间读出,写入到指定的文件中 |
示 例 | //调用一下write函数,往对应的fd里面写入数据 a=write(fd,buf,sizeof(buf)); printf("a = %d\r\n",a); //调用一下write函数,在屏幕或者终端显示 a=write(1,buf,sizeof(buf)); printf("a = %d\r\n",a); |
read从文件里面读数据,并保存在buf中
函 数 详 情 | 原型: ssize_t read(int fd,void *buf,size_t count); 参数: int fd 表示文件的描述符 void *buf 表示缓存空间的地址 ---用来放获取到的字符信息 size_t count 期望读取数据的长度 返回值:成功 返回实际读取到的长度 文件已经没有内容可供读取了,此时系统会返回0 失败 -1 功能:从文件中读取数据,将数据写入到对应的buf里面 注意:实际读取的数据长度要小于等于期望数据长度--指的就是count。 |
示 例 | //利用read函数,读取文件里面的信息,放到buf里面 a=read(fd,r_buf,sizeof(r_buf)); printf("a = %d\r\n",a); printf("r_buf= %s\r\n",r_buf); //从键盘上获取内容--fd = 0,获取到的内容放到r_buf a=read(0,r_buf,sizeof(r_buf)); |
lseek文件的读写位置
函 数 详 情 | 头文件: #include <sys/types.h> #include <unistd.h> 原型:off_t lseek(int fd,off_t offset,int whence); 参数:int fd; 表示文件的描述符 off_t offset 表示相对偏移量 int whence 偏移基点,一般填写三种形式 SEEK_SET(表示起始位置) SEEK_CUR(表示当前位置) SEEK_END(表示文件的结尾) 返回值:相对于起始位置的偏移量 失败 返回-1 功能:自由的调整文件的读写位置 例子:第一种:将文件的读写位置调整到开始位置后第5个字节 lseek(fd,5,SEEK_SET); //实例:一般情况下,从文件的开头这个地方开始 0 第二种:将文件的读写位置调整到文件的末尾 lseek(fd,0,SEEK_END); 第三种:将文件的读写位置调整到当前位置的前两个字节 lseek(fd,-2,SEEK_CUR); |
示 例 | //调用lseek函数,完成读写位置的移位操作 b=lseek(fd,0,SEEK_SET); printf("seek_set = %d\r\n",b); |