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

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

相关推荐
我要洋人死9 分钟前
导航栏及下拉菜单的实现
前端·css·css3
龙哥说跨境20 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
科技探秘人20 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人21 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR26 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香28 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q24985969331 分钟前
前端预览word、excel、ppt
前端·word·excel
小华同学ai36 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
Gavin_9151 小时前
【JavaScript】模块化开发
前端·javascript·vue.js
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器