-
标准IO
C语言IO常用函数总结_io函数分类_666lc666的博客-CSDN博客
文件类型有哪些?
bcd-lsp
‘b’:块设备文件(sd卡 硬盘等)qq
’c‘:字符设备文件;(usb 鼠标等)
‘d’:目录文件;(蓝色)
‘-’:普通文件;(白色)q'q
‘l’:软链接文件;(相当于快捷方式)
‘s’:套接字文件;()
‘p’:管道文件;()
-
标准IO概念
在C库中定义的一组用于输入输出的函数。(C语言)
-
标准IO特点
1)有缓冲机制:通过缓冲机制来减少系统调用,提高效率。
2)围绕“流”进行操作,“流”用FILE*表示。
- FILE是数据类型(结构体),FILE*结构体指针。
- 文件内部有文件指针,文件用文件指针操作,流只是起到了一个媒介的作用,封装原来的接口等,开辟缓冲区,减少系统调用。
- 索引使用:1.vi -t要查找的内容 (查找宏,数据类型等)
输入前面序号,回车
- 继续追踪
将光标定位到要追踪的内容上,ctrl+] (右中括号)
回退:ctrl+t
3)标准IO默认打开了三个流,stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
三个流是结构体指针变量。
4)标准IO一般只用于操作普通文件
-
缓冲机制
1)全缓冲:跟文件相关
刷新条件:
程序正常结束
缓冲区满刷新
强制刷新:fflush
2)行缓冲:跟终端相关
刷新条件:
\n
程序正常结束
缓冲区满刷新
强制刷新:fflush
#include <stdio.h>
int main(int argc, char const *argv[])
{
//1.\n刷新缓冲区
// printf("hello world\n");
// while (1)
// ;
//2.程序正常退出
// printf("hello world");
// while (1)
// ;//不让程序结束
//3.缓冲区满刷新
//有大小,当将缓冲区写满数据时,
//再继续向缓冲区中写数据,
//会将原来缓冲区中满了的数据全部拿出来,打印到终端
//新写的数据,可以继续向里面写
//测试缓冲区大小 kb 1kb=1024byte 1b=8bit
//缓冲区大小1kb
//方法一:
// for(int i=0;i<300;i++)
// {
// printf("%4d",i);
// }
// while(1);
//方法二:
//缓冲区的结束地址-起始地址=缓冲区大小
// printf("hello"); //开辟缓冲区
// printf("%d\n", stdout->_IO_buf_end - stdout->_IO_buf_base);
// 4.强制刷新
printf("hello");
//fflush(stdout);//强制刷新
fflush(NULL);//强制刷新所有的输出缓存
while (1)
;
return 0;
}
return 是函数的正常结束
ctrl +c是函数的不正常结束
3)不缓冲:没有缓冲区,标准错误
scanf--》标准输入缓冲区---》终端输入
标准输入缓冲区有内容 不进入终端输入
printf--》标准输出缓冲区---》终端