输入输出原理与C语言标准输入输出函数
来源:互联网 发布:oracle数据库统计分析 编辑:程序博客网 时间:2024/05/20 10:22
输入输出原理:
输入:当键盘按下按键之后程序读取到数据
流程
1、键盘缓冲区:键盘的内部有一块微处理器,它控制着键盘的全部工作,比如主机加电时键盘的自检、扫描,扫描码的缓冲以及与主机的通讯等等。当一个键被按下时,微处理器便根据其位置,将字符信号转换成二进制码,传给主机和显示器。如果操作人员的输入速度很快或CPU正在进行其它的工作,就先将键入的内容送往内存中的键盘缓冲区,等CPU空闲时再从缓冲区中取出暂存的指令分析并执行
2、输入缓冲区:可以看成电脑内存中的某一块
3、程序:输入缓冲区数据提交给程序
输出:程序内容输出屏幕
流程
1、程序:程序输出内容提交给输出缓冲区
2、输出缓冲区:可以堪称内存中某一块
3、屏幕缓冲区:类似与键盘缓冲区
清空输入缓冲区:
scanf("%*[^\n]"); 丢弃所有\n之前的字符
scanf("%*c"); 丢弃任意一个字符
输出缓冲区内容到屏幕显示的方法:
1、\n
2、flush 用于刷新缓冲区
fflush(stdout); 刷新输出缓冲区
3、输出缓冲区满了,可以显示在屏幕上(一般大小为4Kb)
4、程序结束
C语言的格式化输出和输入函数
1、格式化输出函数
int printf("格式字符串", 标识符名称...);
#include <stdio.h>
printf是一个函数,""里面用于设置输出的格式,后面代表具体的输出内容
格式字符串中分以下三种字符
(1)普通字符:一般用于打印提示信息
(2)转义字符: \n
常见的转义字符
\n 换行
\r 回车不换行,回到本行开始位置
\b 退格
\a 响铃
\t tab键
\" 输出"
\' 输出'
\? 输出?
(3)格式控制符:用于控制输出格式,也叫占位符
常见的格式控制符
%d/%i -> int
%u -> unsigned int
%hd/%ld -> short/long
%c ->char
%s ->字符串 "nihao"
%f/%lf -> float/double
%e -> 指数的形式输出浮点数
%g -> 从%e和%f之间选择较好的输出格式输出,一般会省略后面多余的0
特殊:
%x/%o -> 十六进制格式/八进制格式
%p -> 输出一个地址
注意:
(1)格式控制符中使用的格式 和 后面输出的数据类型要保持一致
如果类型不一致,结果不可预知
(2)字符类型本质就是整数,字符类型也可以使用%d格式输出
输出ASCII
(3)%d 和 %i的比较
%d和%i 在printf中没有区别
在scanf中有区别:%i除了读取十进制,还可以读取八进制 十六进制
特殊的格式控制符
% 实际上就是格式控制符的开始
%3d 输出的数据占用3个字符的宽度
%02d 输出的数据占用2个字符的宽度,如果不够空位补0
%-3d 输出的数据占用3个字符的宽度,左对齐,没有-默认是右对齐
%m.nf 输出一个共m位宽度的数据(包含小数点),然后小数点后有n位
%% 输出一个%
2、格式化输入
scanf("格式字符串",标示符地址列表);
#include <stdio.h>
scanf是一个函数,格式字符串和printf中一样,地址列表:&num
例子:
int num;
scanf("%d",&num);
scanf在读取数据时候,会跳过前面的空白字符(空格,回车,tab键),直接去寻找指定的格式读取数据
2.2 注意问题
(1)输入的数据要和scanf中指定的格式要一致
(2)scanf的格式字符串中要求只能有格式控制符
(3)当读取多个数据时,使用空白字符将多个输入的数据隔开
(4)当读取多个数据中有%c格式的数据时,采用在%c前面加一个空格,表示忽略所有空白字符,直到
遇见非空白字符
(5)scanf中不要省略&,否则可能引发段错误
段错误:访问了非法地址
(6) scanf("%d",&num);
scanf不会将末尾的回车符读走,scanf("%*c");->读取任意一个字符并且丢弃
2.3 %i和%d在scanf中的区别
在scanf中有区别:%i除了读取十进制,还可以读取八进制 十六进制
- 输入输出原理与C语言标准输入输出函数
- C语言标准输入输出函数
- C语言标准输入输出函数
- C语言标准输入输出
- C语言 标准输入输出
- C/C++标准输入输出与文件输入输出
- C/C++标准输入输出与文件输入输出
- C/C++标准输入输出与文件输入输出
- C语言输入输出函数
- C语言输入输出函数
- c语言输入输出函数
- c语言输入输出函数
- c语言输入输出函数
- C语言输入输出函数
- C语言输入输出函数
- C语言输入输出函数
- C语言输入输出函数
- C语言输入输出函数
- vs2010通用属性模板
- Java学习笔记--System.out.println();
- JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)来定义不同的字体表现
- xcode6 swift 代码自动补全
- 带有弹动效果的加载动画实现
- 输入输出原理与C语言标准输入输出函数
- 看完阿里云的Hadoop云梯集群设计思路有感
- VLC for android Windows平台上基于 Eclipse的开发
- 关于ListView中Item动态加载的例子(android)(ExpandAbleListView)
- Weka 交叉验证相关类的使用
- 存储器的层级结构
- 静态加载dll和动态加载dll
- Java多线程:“基础篇”11之生产消费者问题
- Java多线程:“基础篇”11之生产消费者问题(2)