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

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

相关推荐
C+-C资深大佬2 分钟前
python while循环
服务器·开发语言·python
Tian_Hang2 分钟前
eclipse ditto 学习笔记
运维·服务器·开发语言·javascript·3d
iCxhust17 分钟前
linux目录是否保存在硬盘 启动后读入解析的
linux·运维·服务器
懒鸟一枚17 分钟前
Linux 系统 Service 服务配置详解
linux·服务器·网络
JNX_SEMI22 分钟前
AT2659 L1频段多模卫星导航低噪声放大器技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
敖行客 Allthinker1 小时前
企业级多台服务器组装 K3s 高性能集群实战指南
运维·服务器·团队开发
RisunJan1 小时前
Linux命令-readonly(Bash 内建设置只读变量)
linux
m0_737302582 小时前
OpenClaw:赋予大模型执行能力的开源本地 AI 智能体
服务器
Web极客码2 小时前
在WordPress Multisite中添加超级管理员用户
服务器·php·网站
FlightYe2 小时前
FFmpeg移动端硬解机制
linux·网络·ffmpeg·音视频·实时音视频·视频编解码