一:输入输出功能
(1).C语言本身并不提供输入输出功能。使用的是c语言函数库中的“标准输入输出函数”
(2).c语言函数库中提供的输入输出函数
getchar、putchar 操作一个字符‘a’
gets、puts 操作一个字符串
(3).需要加上<stdio.h>头文件
二:函数(暂不介绍gets,puts,到数组在做说明)
(一)getchar/putchar
(1).getchar
int getchar(void);//函数原型
功能:从键盘获取一个字符
参数:void---表示为空//表示使用时不需要给实参
返回值:表示获取到的字符的ASCII码值
eg:int ret;ret = getchar();//表示获取到getchar读取的字符的ASCII的值
任何字符都可以读取,包括回车,tab。。。
(2). putchar
int putchar(int c);
功能:
输出一个字符
参数:
@c --- 表示要出的的字符
返回值:
成功 输出了的字符的ASCII码值
失败 -1
eg:putchar('a');//输出字符a
eg:int a = 67;putchar(a);输出a的值所对应的ASCII码符号
从键盘输入进去的数将暂时存在缓冲区,当按下回车时开始读取缓冲区的数值,未被读取的数值将暂时存在缓冲区中。
(二).printf,scanf
(1).printf() //格式化输出函数
eg:printf("a = %d\n",10);//a = 10
int printf(const char *format, ...);
... //表示 可变参数
printf("格式控制字符串",输出参数列表);
printf("a = %d\n",a);
------------格式控制字符串
a.普通字符 --- 原样输出
b.占位符 --- 匹配后面的输出参数的
整型
%d --- 转换为 有符号 十进制形式
%u --- 转换为 无符号 十进制形式
%o --- 转换为 八进制形式
%x --- 转换为 十六进制形式
%X --- 转换为 十六进制形式 a b c d e f以大写形式输出
0X //x也会是大写
浮点型
%f --- 转换为 十进制形式的小数,输出时默认保留6位小数,不足6位 补0
%e --- 转换为 科学计数法的形式
%E 指数形式中e 变成 大写 E
%g --- 以 一种 更简洁的方式输出,同时不会输出无意义的0
字符型
%c --- 转换为字符形式输出
%s --- 转换为字符串形式输出
-----在占位符之中%与d之间还有辅助控制符
%[辅助控制符]d
辅助控制符:
# ---- %#x //打印出8进制 或 16进制的前缀
%#o
m ---- 数字 表示要输出的数据的宽度
如果数据本身的宽度 > m 此时按照实际宽度输出
如果数据本身的宽度 < m 此时按照m宽度输出,空出来的位置 填空格
默认右对齐
-m ---- 按指定宽度输出 ,左对齐 (负号表示左对齐)
0m ---- 多出来的位置 可以填充0
.n ---- n数字
%f //%.2f //表示保留2位小数
%e
%s //表示 保留前n个字符
l ---- long
ll ---- long long //整型
h ---- half 1/2
hh ---- half half 1/4
!!!!!当出现printf("%d",a + b,a - c,a);的情况时,将对应输出a + b的值
占位符 与 输出参数 对应关系
一一对应的
(2).scanf //格式化输入函数
格式:
scanf("格式控制字符串",地址列表)
----------格式控制字符串 //与printf中的 一样
scanf("a = %d");
a.普通字符 --- 原样输入
b.占位符 --- 将从键盘输入的数据 转换成指定的格式
整型
%d --- 转换为 有符号 十进制形式
%u --- 转换为 无符号 十进制形式
%o --- 转换为 八进制形式
%x --- 转换为 十六进制形式
%X --- 转换为 十六进制形式 a b c d e f以大写形式输出
0X //x也会是大写
+123
-123
浮点型
%f --- 转换为 十进制形式的小数,输出时默认保留6位小数,不足6位 补0
%e --- 转换为 科学计数法的形式
%E 指数形式中e 变成 大写 E
%g --- 以 一种 更简洁的方式输出,同时不会输出无意义的0
字符型
%c --- 转换为字符形式输出
%s --- 转换为字符串形式输出
-----------地址列表
int a;
scanf("a = %d",&a);
辅助控制符
%d
m //数据宽度 ---输入宽度
l //
%lf //输入的时候 ,这里要做到精确匹配
%f --- float
%lf --- double
%Lf --- long double
%ld --- long
%lld --- long long
注意:
1. scanf 格式控制字符串中 尽量不出现 普通字符,一般只写 占位符
2. scanf 的地址列表中,一定是有效的地址
3. scanf 输入结束的条件(匹配结束的条件)
%d
[12a3]
a.遇到非法字符 匹配结束
b.遇到空白符 匹配结束
空白符 (空格 回车 tab)
c.超过指定的宽度 结束
scanf("%3d",&a);
当scanf("%d %c %f",&a,&b,&c);时
scanf的格式控制字符串中,如果出现 空白符 ,表示匹配任意多个空白符
%*c 表示 匹配一个数据项 但是并不把这个数据给到任何一个变量中
printf函数和scanf函数是有返回值的---scanf函数的返回值是读取到的数据个数
---printf函数的返回值是输出的字符个数 eg:ret = printf("Hello\n");ret为6