文件IO编程之学习总结
目录
一、多文件编程
二、⽬录(⽂件)操作
1.创建⽬录mkdir
2.删除⽬录rmdir
3.打开⽬录⽂件
4.获取打开⽬录中的⽂件readdir
5.关闭打开的⽬录⽂件closedir
6.字符串操作
三、文件IO
1.打开文件 open
2.读取⽂件(输⼊到程序)read
3.写⼊⽂件(输出到⽂件)write
4.关闭⽂件close
5.设置⽂件偏移位置lseek
四、标准IO
1.打开⽂件fopen
2.关闭⽂件fclsoe
3.写⼊⽂件fwrite
4.读取⽂件fread
5.刷新标准io缓冲区(把缓冲区内容写⼊⽂件)
6.判断是否错误或读取到⽂件结束
7.读取单个字符fgetc
8.写⼊单个字符fputc
9.读取⼀个字符串fgets
10.写⼊⼀个字符串
一、多文件编程
二、⽬录(⽂件)操作
1.创建⽬录mkdir
#include <sys/stat.h>#include <sys/types.h>在指定⽬录中创建⼀个⽬录⽂件int mkdir(const char *pathname, mode_t mode);参数:参数1:const char *pathname:指针,字符串⾸地址,要创建的⽬录⽂件的路径参数2:mode_t mode:创建的⽬录的权限(读写执⾏)返回值:成功:返回0失败:返回-1
2.删除⽬录rmdir
#include <unistd.h>int rmdir(const char *pathname);参数:参数1:const char *pathname:字符串⾸地址,表⽰要删除的⽬录返回值:成功:返回0失败:返回-1
3.打开⽬录⽂件
#include <sys/types.h>#include <dirent.h>去打开对应路径下的⽬录DIR *opendir(const char *name);参数:参数1:const char *name:字符串⾸地址,表⽰要打开的⽬录⽂件路径返回值:DIR:⽬录信息结构体类型成功:返回⽬录信息结构体的地址(指针),标识打开的⽬录⽂件失败:返回NULL(空指针)
4.获取打开⽬录中的⽂件readdir
#include <dirent.h>获取打开的⽬录中,⼀个⽂件struct dirent * readdir(DIR *dirp);参数:参数1:DIR *dirp:获取哪个(打开的)⽬录中的⽂件返回值:成功:返回获取到的这个⽂件的描述(结构体)的地址NULL:表⽰本次获取已经获取到⽬录的结尾了没有⽂件了(已经获取完)⽂件描述结构体struct dirent {ino_t d_ino;//inode号,⽂件系统中对⽂件的唯⼀编号off_t d_off;//偏移unsigned short d_reclen;//⻓度⼤⼩unsigned char d_type;//⽂件类型char d_name[256];//⽂件名};
5.关闭打开的⽬录⽂件closedir
#include <sys/types.h>#include <dirent.h>关闭打开的⽬录int closedir(DIR *dirp);参数:参数1:DIR *dirp:表⽰要关闭的⽬录⽂件返回值:成功:返回0失败:返回-1
6.字符串操作
#include <string.h>⽐较两个字符串int strcmp(const char *s1, const char *s2);//⽐较s1字符串,和s2字符串是否相等,从第⼀个字符开始⽐较,⼀直⽐较到字符串结束,如果每个字符都相等,则整个字符串相等,返回0
⽐较两个字符串前n个字符是否相等,相等返回0int strncmp(const char *s1, const char *s2, size_t n);
把src字符串内容追加到dest字符串最后字符位置,让dest字符串添加内容char *strcat(char *dest, const char *src);
把src字符串内容前n个字符追加到dest字符串最后字符位置,让dest字符串添加内容char *strncat(char *dest, const char *src, size_t n);
把src字符串内容拷⻉到dest中,覆盖原dest内容,让dest变为src字符串内容char *strcpy(char *dest, const char *src);
把src字符串前n个字符拷⻉到dest中,覆盖原dest内容,让dest变为src字符串内容char *strncpy(char *dest, const char *src, size_t n)
获取s地址字符串的⻓度(不计算'\0'),返回值就是⻓度size_t strlen(const char *s);
三、文件IO
IO:输⼊输出在程序中如果要操作磁盘上的⽂件,对⽂件就是读写操作读:程序从磁盘上的⽂件中获取到内容放⼊到程序中----输⼊写:程序把程序中的数据存放到磁盘上的⽂件中---------输出
1.打开文件 open
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>打开⽂件:int open(const char *pathname, int flags);参数:参数1:const char *pathname:字符指针,表⽰的是字符的地址,字符串的⾸地址,要打开的⽂件路径字符串的地址参数2:int flags:整数,打开⽂件的选项O_RDONLY:只读O_WRONLY:只写O_RDWR:读写O_TRUNC:清空⽂件(在有 写 ⽅式 有效)O_APPEND:追加⽂件(在有 写 ⽅式 有效),在写⽂件时,在⽂件末尾位置添加写O_CREAT: 如果⽂件不存在则,创建⽂件,存在则直接打开,如果要使⽤当前选择,则需要第三个参数:创建⽂件权限返回值:失败,返回-1成功打开⽂件,返回⽂件描述符 >= 0创建且打开⽂件:int open(const char *pathname, int flags, mode_t mode);
2.读取⽂件(输⼊到程序)read
#include <unistd.h>从打开的⽂件中读取⽂件内容,输⼊到程序中ssize_t read(int fd, void *buf, size_t count);//从指定的fd(打开的⽂件中,读取count个字节数据,存放到程序的内存buf地址开始位置)参数:参数1:int fd:⽂件描述符,表⽰打开的⽂件参数2:void *buf:指针,表⽰把从⽂件中读取的内容,存放到程序指定的内存地址中参数3:size_t count:整数,表⽰从⽂件中读取多少个字节的数据内容返回值:成功:返回读取到的字节数,如果返回值为0表⽰本次读取是从⽂件末尾开始读取,没有内容失败:-1
3.写⼊⽂件(输出到⽂件)write
#include <unistd.h>、从程序中把内存数据写⼊到⽂件中,程序输出到⽂件中ssize_t write(int fd, const void *buf, size_t count);//把buf这个内存地址的中的数据,拿出 count字节数,写⼊到fd⽂件中参数:参数1:int fd:要写⼊哪个⽂件参数2:const void *buf:要写⼊的内容在哪个内存地址(把哪个内存地址的内容,写⼊⽂件)参数3:size_t count:要写⼊内容的⼤⼩返回值:成功:返回写⼊的字节数失败:返回-1
4.关闭⽂件close
#include <unistd.h>把打开的⽂件关闭int close(int fd);参数:参数1:int fd:⽂件描述符,表⽰关闭哪个打开的⽂件返回值:成功:返回0失败:返回-1
5.设置⽂件偏移位置lseek
#include <sys/types.h>#include <unistd.h>重新设置⽂件当前操作位置(修改偏移位置)off_t lseek(int fd, off_t offset, int whence);//设置打开的fd⽂件的偏移位置参数:参数1:int fd:表⽰打开的⽂件,要设置的⽂件参数2:off_t offset:整数,偏移量,表⽰偏移多少个字节+:正数,向⽂件末尾偏移-:负数,向⽂件开头偏移参数3:int whence:基准点,表⽰从哪个位置开始计算SEEK_SET:从⽂件开始位置计算偏移SEEK_CUR:从⽂件当前的操作位置计算偏移SEEK_END:从⽂件末尾位置开始计算偏移返回值:成功:返回从⽂件开始位置到新偏移之后位置⼀共多少个字节失败:返回-1
四、标准IO
1.打开⽂件fopen
#include <stdio.h>打开指定的⽂件FILE *fopen(const char *pathname, const char *mode);参数:参数1:const char *pathname:字符串⾸地址,表⽰要打开的⽂件路径参数2:const char *mode:字符串⾸地址,通过通过字符串来表⽰打开⽂件的⽅式"r":只读⽅式打开(⽂件必须存在)---------O_RDONLY"r+":读写⽅式打开--------O_RDWR"w":只写⽅式打开(清空⽂件,当⽂件不存在时创建)----O_WRONLY | O_CREAT | O_TRUNC"w+":读写⽅式打开(清空⽂件,当⽂件不存在时创建)---O_RDWR | O_CREAT | O_TRUNC"a":追加写⽅式打开(操作位置在⽂件末尾,当⽂件不存在时创建)---O_WRONLY | O_CREAT | O_APPEND"a+":读写⽅式打开(写为追加写操作位置在⽂件末尾,当⽂件不存在时创建)-----O_RDWR | O_CREAT | O_APPEND如果上述字符串中 包含'b'表⽰打开⼆进制⽂件,否则打开是⽂本⽂件返回值:FILE:是⼀个结构体,描述打开的⽂件信息(包括了⽂件描述符)返回值就是返回FILE这个结构体类型变量的地址成功:返回FILE * 指针,⽂件信息结构体地址(能知道打开的⽂件)失败:返回NULL(空指针)
2.关闭⽂件fclsoe
#include <stdio.h>关闭⽂件,则会把当前打开的⽂件的缓冲区存放到⽂件中int fclose(FILE *stream);参数:参数1:FILE *stream:关闭打开的哪个⽂件返回值:成功:返回0失败:返回-1(EOF)
3.写⼊⽂件fwrite
#include <stdio.h>把数据写⼊到⽂件size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);参数:参数1:const void *ptr:要写⼊⽂件的内容对应地址参数2:size_t size:每⼀个数据⼤⼩参数3:size_t nmemb:写⼊多少个数据参数4:FILE *stream:写⼊的⽂件返回值:成功:返回写⼊的数据的个数
4.读取⽂件fread
#include <stdio.h>从⽂件中读取数据存放到ptrsize_t fread(void *ptr, size_t size, size_t nmemb, FILE*stream);参数:参数1:void *ptr:从⽂件中读取的数据存放的位置(指针)参数2:size_t size:每个数据⼤⼩(字节)参数3:size_t nmemb:读取多少个数据参数4:FILE *stream:读取的⽂件返回值:成功:返回读取的数据个数0:表⽰读取时没有数据可读(到达⽂件末尾) , 或 读取错误
5.刷新标准io缓冲区(把缓冲区内容写⼊⽂件)
#include <stdio.h>主动把缓冲区的内容写⼊⽂件int fflush(FILE *stream);
6.判断是否错误或读取到⽂件结束
#include <stdio.h>测试当前是否是⽂件末尾,如果是⽂件末尾返回⾮0(返回真)int feof(FILE *stream);测试当前是否是错误,如果是错误返回⾮0int ferror(FILE *stream);
7.读取单个字符fgetc
#include <stdio.h>从⽂件中读取⼀个字符,以返回值形式,返回读取到的字符(int)int fgetc(FILE *stream);参数:参数1:FILE *stream:从哪个⽂件中读取返回值:成功:返回读取到的字符,以int类型(字符对应的ASCII码)表⽰如果本次是在⽂件末尾位置读取(⽂件结束位置),返回EOF(-1)如果读取失败,返回EOF需要判断 EOF到底是失败还是读取到⽂件末尾int getc(FILE *stream); ==== fgetcint getchar(void); == fgetc(stdin):从终端⽂件读取(输⼊)⼀个字符
8.写⼊单个字符fputc
#include <stdio.h>往⽂件中写⼊⼀个字符int fputc(int c, FILE *stream);参数:参数1:int c:要写⼊的字符的ASCII码参数2:FILE *stream:要写⼊的⽂件返回值:成功:返回写⼊的字符的ASCII码失败:返回EOF(-1)int putc(int c, FILE *stream); 等价于 fputcint putchar(int c);等价于 ===== fputc(c,stdout),往终端⽂件写⼊⼀个字符
9.读取⼀个字符串fgets
#include <stdio.h>从⽂件中读取⼀个字符串char *fgets(char *s, int size, FILE *stream);从⽂件 stream中读取内容,最多读取size-1个字符,存储到s指针这个地址中。具体读取的字符⼤⼩:⼆选⼀1、读取到⽂件结束2、读取到⼀⾏结束(\n)如果在读取过程中当读取到size-1时,两个都不满⾜,则读取size-1个字符(读取最⼤⼤⼩)注意:在读取的字符串后,加上'\0'字符,表⽰字符串的结束返回值:成功:返回 s 指针NULL:本次读取在⽂件结束位置读取(已经读取到⽂件末尾)char *gets(char *s);等价于 == fgets(s,,stdin),从终端上读取⼀个字符串,没有限制⼤⼩(没有size-1)容易越界
10.写⼊⼀个字符串
#include <stdio.h>把s中的字符串('\0'为⽌),写⼊到⽂件中int fputs(const char *s, FILE *stream);参数:参数1:const char *s:要写⼊的字符串,到'\0'为⽌参数2:FILE *stream:写⼊的⽂件返回值:成功:⾮负整数 >= 0失败:EOF(-1)int puts(const char *s);等价于 ==== fputs(s,stdout),往终端上写字符串
文件IO编程之学习总结相关推荐
- linux 带缓存的fwrite,文件IO编程之(六):基于流缓冲 fopen,fwrite,fput
标准IO开发 前面分析的文件IO编程都是基于文件描述符的.这些都是基本的IO控制,是不带缓存的. 这里要讨论的IO操作是基于流缓冲的,它是符合ANSIC的标准IO处理. 标准IO提供流缓冲的目的是尽可 ...
- 2.Linux文件IO编程
2.1Linux文件IO概述 2.1.0POSIX规范 POSIX:(Portable Operating System Interface)可移植操作系统接口规范. 由IEEE制定,是为了提高UNI ...
- 嵌入式Linux基础学习笔记-文件IO编程-I/O多路复用
实验内容:多路复用-I/O操作及阻塞 编程实现文件描述符集合的监听 multiplex_poll.c文件编写: /* multiplex_poll.c */ #include <fcntl.h& ...
- 嵌入式Linux基础学习笔记-文件IO编程-文件锁(2)
文件操作仿真FIFO,实现生产者-消费者运行模型 编程实现生产者程序producer.c,创建仿真FIFO结构文件(普通文件),按照给定的时间间隔向FIFO文件写入自动生成的字符(自定义),生产周期及 ...
- 嵌入式Linux基础学习笔记-文件IO编程-文件锁(1)
文件锁-文件共享 共享资源竞争问题的解决方法:文件锁. 文件锁包括 建议性锁 要求每个上锁文件的进程都要检查是否有锁存在,并且尊重 已有的锁 强制性锁 由内核执行的锁,当一个文件被上锁进行写入操作的时 ...
- java记事本编程工作原理_Java文件(io)编程之记事本开发详解
本文实例为大家分享了Java开发简易记事本的具体代码,供大家参考,具体内容如下 public class NotePad extends JFrame implements ActionListene ...
- _int64_在Linux对应对文件,LInux 编程基础学习笔记 持续ing 文件读写
一.文件读写 1.创建文件: 头文件: 函数:creat(char *path,int mode) mode:S_I(R|W|X)(USR|GRP|OTH) 对不同用户组的不同读写执行 2.打开 ...
- c语言 文件 lseek,文件IO编程之(二):read.write.lseek
下面认真分析write.c函数 #include//包含必要的头文件 #include#include#include#include#include#include#define MAXSIZE i ...
- Python学习笔记:Io编程序列化
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
最新文章
- 北大新研究用数学模型揭网红崛起奥秘!登上Nature子刊
- 报告 | 2019年全球数字化转型现状研究报告
- 中兴再夺PCT国际专利申请榜首:连续7年位居前三
- 如何获取python的当前工作目录-python笔记(一)获取当前目录路径和文件
- 一篇文章弄懂Java反射基础和反射的应用场景
- 深度学习(七十一)3D CNN时空特征学习
- 前端:JS/17/前篇总结(JS程序的基本语法,变量),数据类型-变量的类型(数值型,字符型,布尔型,未定义型,空型),数据类型转换,typeof()判断数据类型,从字符串提取整数或浮点数的函数
- (208)ASIC开发总结
- ESP8266-01/01S配对阿里云生活物联网教程(超详细)
- python短期预测图_用Python预测「周期性时间序列」的正确姿势
- 常见错误——给定编码中的字符无效。(xml)
- java后台开发程序媛~~
- linux的进程rl,linux 进程 rl是什么状态
- 常见外贸英文术语(下)
- 我分析了100篇文章,总结出5点头条号推荐机制真相
- 让iPad认识一下Windows系统
- C语言编写九九乘法表,实现不同三角形形状表格输出
- WeChatExtension:一款mac微信必备插件!
- Scrum立会报告+燃尽图(Beta阶段第二周第一次)
- 联合分析法(Python实现)