目录
1.概念
2. C语言函数库提供的输入输出函数
2.1 getchar
2.2 putchar
2.3 printf
附:占位符
2.4 scanf
3. 附加
1.概念
输入是从键盘、鼠标等设备向计算机(内存)
注:c语言本身不提供输入输出功能,使用的是c语言中的“标准输入输出”函数。
2. C语言函数库提供的输入输出函数
使用时需要加上头文件 --- <stdio.h>
getchar/putchar 操作一个字符
gets/puts 操作一个字符串
scanf/printf 格式化的函数
2.1 getchar
功能:从键盘获取一个字符
参数:void --- 表示为空(使用时不需要给实参)
返回值:表示获取到的字符的ASCII码值
eg:
int ret;
ret = getchar(); // 表示获取到getchar读取的字符的ASCII码值
2.2 putchar
功能:输出一个字符
参数:表示要输出的字符
返回值:成功 --- 输出了的字符的ascii码值
失败 --- 输出 -1
eg:
char ch = 'b';
putchar(ch); // 结果为b
2.3 printf
一般格式:printf(“格式控制字符串”,输出参数列表);
printf("a = %d\n",a);
(1)格式控制字符串
a.普通字符 --- 原样输出
b.占位符 --- 匹配后面的输出参数(%d 、%c、%u等)
附:占位符
注:一个占位符只能匹配一个输出参数
整型
%d --- 转换为有符号十进制形式
%u --- 转换为无符号十进制形式
%o --- 转换为八进制形式
%x --- 转换为十六进制形式
%X --- 转换为十六进制形式,字母以大写形式输出
浮点型
%f --- 转换为十进制形式的小数,输出是默认保留6位小数,不足6位补0
%e --- 转换为科学计数法形式
%g --- 以一种更简洁的方式输出,不会输出无意义的0
字符型
%c --- 转换为字符形式输出
%s --- 转换为字符串形式输出
注:% [辅助控制符] d
辅助控制符:
# --- %#x 打印出十六进制数的前缀0x
--- %#o 打印出八进制数的前缀 0
m --- 表示要输出数据的宽度
注:
如果数据本身宽度 > m 此时按照实际输出的宽度
如果数据本身宽度 < m 此时按照m的宽度输出,空的地方补空格 --- 默认右对齐(加上符负号左对齐,加上0 --- 0m 多出来的位置填充0)
.n --- n为数字 (.2f 表示保留两位小数)
--- %.ns 表示保留前n个字符
eg:
#include<stdio.h>
int main(void)
{
int a = 1234;
float b = 12.3456;
printf("%d\n",a);
printf("%8d\n",a);
printf("%2d\n",a);
printf("%#o\n",a);
printf("%08d\n",a);
printf("%.2f\n",b);
return 0;
}
运行结果:
2.4 scanf
从键盘输入数据
一般格式:scanf("格式控制字符串",地址列表);
int a;
scanf("a = %d",&a);
(1)格式控制字符串(与printf中一样)
a.普通字符 --- 原样输入
b.占位符(与printf一致) --- 将输入数据转为指定的格式(%lf 和 %f 匹配的时候要做到精确,lf 匹配double类型 , f 匹配float类型)
注:(1)scanf 格式控制中,一般不写普通字符;
(2)结束条件(遇到非法字符、、超过指定宽度、空白符)--- 空白符:空格、回车、tab
scanf("%3d",&a);
(3)在输入字符型数据时要注意空白符也是字符型数据。
(4)%* 可以跳过一个
eg:
#include<stdio.h>
int main(void)
{
int a;
scanf("%*d%d",&a);
printf("%d\n",a);
}
运行结果:
(5)输入的返回值是输入数据的个数
ret = scanf("%f%f%f",&a,&b,&c) // 返回的是输入数据的个数
3. 附加
(1)求根号:用 sqrt(数据)
前面需要加上头文件 #include<math.h> 在编译时需要链接,在后面加上lm,l --- 表示连接,m -- 表示math函数库。
#include<math.h>
sqrt(2) // 对2求根号,得到根号2的值
(2)清除缓冲区
可以把缓冲区所有垃圾数据全部清除。