标准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

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

相关推荐
SleepyZone5 分钟前
Cline 源码浅析 - 从输入到输出
前端·ai编程·cline
coder_lorraine9 分钟前
【Linux系列】Linux用户大揭秘:从“公寓住户”到“社区管理员”的奇幻之旅
linux
Struggler2819 分钟前
pinia-基于monorepo的项目结构管理
前端
Struggler28113 分钟前
SSE的使用
前端
用户58061393930020 分钟前
前端文件下载实现深度解析:Blob与ObjectURL的完美协作
前端
Lin866623 分钟前
Vue 3 + TypeScript 组件类型推断失败问题完整解决方案
前端
coding随想23 分钟前
从零开始:前端开发者的SEO优化入门与实战
前端
前端工作日常25 分钟前
我理解的JSBridge
前端
Au_ust26 分钟前
前端模块化
前端
顺丰同城前端技术团队26 分钟前
还不会用 Charles?最后一遍了啊!
前端