标准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 tmpbuff4096 = {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

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

相关推荐
不吃鱼的羊4 分钟前
如何建立高自尊
java·服务器·前端
Zevalin爱灰灰4 分钟前
Linux入门第一部分(Ubuntu入门篇) 第三章 shell脚本入门(一)
linux·ubuntu·嵌入式
丘山望岳6 分钟前
Linux基础指令入门篇
linux·运维·服务器
计算机魔术师7 分钟前
编程智能体卡在"需要登录"这步,六种接法代价差得很远
前端
笨笨饿10 分钟前
#143_屏幕画撕裂的问题及解决方法
linux·stm32·单片机·嵌入式硬件·mcu·lvgl·嵌入式实时数据库
想做小南娘,发现自己是女生喵14 分钟前
LAN Device Monitor 第二周学习文档
java·服务器·数据库
小年糕是糕手18 分钟前
【AI】用 Python 做一个 AI 截图检索助手:把收藏夹里的截图找回来
linux·人工智能·python·chatgpt·agent·codex·deepseek
hhhjhl24 分钟前
Zod 跨端三方库仓颉适配全流程
linux·运维·ubuntu
计算机魔术师36 分钟前
出题人自己算错了,AI成绩从88%直接跳到98%
前端
叼烟扛炮38 分钟前
Linux 学习笔记(三十二):线程控制——创建、等待与分离
linux·运维·服务器·笔记·学习·1024程序员节