标准IO

标准IO是库函数 是系统调用的封装

文件流:

1.具有方向性(读写)

2.具有连续性

3.具有顺序性

1.1 fopen

FILE *fp = NULL;

fp = fopen("m.txt","r");

("要打开的文件名(以字符形式,所以要带引号)", "r/r+/w/w+/a/a+(也要带引号)");

成功返回 打开的文件流指针 用 fp 接
失败返回 NULL

1.2 fclose

fclose(fp); 直接关闭 fp

成功返回 0

失败返回 EOF(-1) 【一般不用返回值】;

char n = 一个单引号字符 或者 字符的ASCII值;

2.1 fputc 向流中写入一个字符

fputc (n, fp); 【前面要用"w"打开】

第一个位置必须是一个字符形式或ASCII形式;

成功 返回写入字符的ASCII码值

失败 返回EOF 【一般不用返回值】

2.2 fgetc 从流中读取下一个字符

n = fgetc(fp); 【前面要用"r"打开】

接收的必须是一个字符形式或ASCII形式;

成功返回 读到字符的ASCII码值

失败返回 EOF

读到文件末尾返回 EOF 【用来判断流里的内容是否结束】

char tmpbuff[4096] = {0};

3.1 fputs 向流中写入一个字符串

fputs(tmpbuff,fp); 【前面要用"w"打开】

成功返回 非负数

失败返回 EOF用来判断数组里的内容是否结束】

3.2 fgets 从流中读取一个字符串

fgets(tmpbuff, 4096,fp); 【前面要用"r"打开】

(要放到这个数组(首地址),最多读取字符的个数,文件指针流)

成功返回 存放字符串空间的首地址

失败返回 NULL

读到文件末尾返回 NULL 【用来判断流里的内容是否结束】

4.1 fwrite 向流中写入nmemb个对象,每个对象size字节大小,在ptr指向的空间中

fwrite((ptr)tmpbuff, 1, 4096, fp);

(要向流中放入的东西(数组的首地址),每个对象的大小,写入多少个对象,流指针);

成功返回 写入对象的个数

失败返回 0

读到文件末尾返回 0

4.2 fread 从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中

fread((ptr)tmpbuff, 1, 4096, fp);

(要从流中拿出放入的数组(数组的首地址),每个对象的大小,写入多少个对象,流指针);

成功返回读到对象个数

失败返回0

读到文件末尾返回0

5.1 fprintf 将格式化字符串输出到stream指向的流中

fprintf((stream)fp,要输出的字符串);

== printf(stdout,要输出的字符串);

5.2 fsancf 从流中读取格式化的字符串

fscanf(fp, 此处同scanf一样); scanf("%d",&a)

6.1 ftell 获得流的偏移量

ftell(fp);

6.2 rewind 将流的偏移量重新设置到开头

rewind(fp);

6 3. fseek 设置流的偏移量

fseek(fp,偏移量, SEEK_SET (文件开头)

SEEK_CUR (文件当前位置 )

SEEK_END (文件末尾 ) );

偏移量: > n 向后偏移n

< n 向前偏移n.

7.特殊的三个流:

stdin 标准输入流 从终端读取数据

stdout 标准输出流 向终端打印数据

stderr 标准出错流 向终端打印数据

自动打开自动关闭;

8..标准IO缓存:

缓存分为3类:

1.全缓存 4k

缓存区满刷新

刷新条件:

1.缓存区存满刷新(全缓存大小:4096)

2.fflush函数强制刷新

3.程序结束/fclose刷新

与文件建立的缓存

2.行缓存 1k

遇到\n刷新

刷新条件:

1.缓存区存满刷新(行缓存大小:1024)

2.遇到\n刷新

3.fflush函数强制刷新

4.程序结束/fclose刷新

与终端建立的缓存 stdin stdout

3.不缓存

直接刷新

缓存区大小 0k stderr

人机交互、界面控制、出错处理

相关推荐
较劲男子汉1 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
Doro再努力1 小时前
Vim 快速上手实操手册:从入门到生产环境实战
linux·编辑器·vim
wypywyp1 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
Doro再努力2 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene2 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
不像程序员的程序媛2 小时前
Nginx日志切分
服务器·前端·nginx
忧郁的橙子.2 小时前
02-本地部署Ollama、Python
linux·运维·服务器
北原_春希2 小时前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
尽意啊2 小时前
echarts树图动态添加子节点
前端·javascript·echarts
吃面必吃蒜2 小时前
echarts 极坐标柱状图 如何定义柱子颜色
前端·javascript·echarts