标准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文章来源:https://www.toymoban.com/news/detail-831954.html
人机交互、界面控制、出错处理
文章来源地址https://www.toymoban.com/news/detail-831954.html
到了这里,关于标准IO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!