输入输出
输入 ---> 计算机 --->输出
[ 内存 ]
c的输入输出 语句 ,并不是c语言本身的一部分
c的函数库
提供了一系列的 输入输出 操作的函数
#include <stdio.h> //std io (standard input output)
用输入输出的功能
就是学习这些函数。
单个字符的输入输出
putchar //输出
getchar //输入
格式化的输入输出
printf
scanf
字符串输入输出
puts
gets
getchar() //
int getchar(void); //函数原型
功能:
字符输入函数
参数:
void --空 不需要实参
返回值:
返回 读到的字符
输入 -------->[CPU]--------->输出
| |
[内存]
putchar();
int putchar(int c); //函数原型
功能:
输出一个字符
参数:
@c 表示要输出的字符(对应的ASCII码值)
返回值:
输出了的 字符 对应的ascii码值
格式化输入输出
printf();
功能: 格式化的输出
函数原型:
printf("格式控制字符串",输出列表)
printf("a = %d\n",a);
格式控制字符串:
(1)普通字符 //原样输出
(2)占位符 //占位符 会被 后面的"输出列表"中的值替换
//占位符 与 输出列表 的对应关系
//一个占位符匹配 输出列表中的一个值
//依次匹配
//占位符 如果没有 匹配的参数
//此时 对应随机值
整型数据:
%d --- 转换为 有符号十进制形式
%o --- 转换为 八进制形式
%x --- 转换为 十六进制形式
x可以是大写,大写 表示 输出的十六进制中的字母 统统都是大写
%u --- 转换为 无符号十进制形式
浮点型:
%f --- 以十进制形式的小数输出,默认保留6位小数
%e --- 以科学计数法形式的输出小数
%g --- 以一种更简洁的方式输出,输出中不会打印无用0
字符型:
%c --- 转换为 字符形式 输出
%s --- 转换为 字符串形式 输出 //数组的时候 再说
%[辅助控制符]d
辅助控制符:
-m.n
m //数字 ---表示指定的输出宽度
// 如果 实际数值宽度 < m ,此时 输出效果 默认右对齐
// 如果想左对齐 ,则m前面加上 一个 负号 (-)
// -m
//如果 实际数值宽度 >= m ,此时 输出实际的数值宽度
//如果右对齐时,此时 m前面可以写0,表示空出来的位置用0填充
# // %#o ---八进制输出时,前面加上0
// %#x ---十六进制输出时,前面加上0x 如果x是大写,则0x也是大写 0X
.n //浮点数 --表示保留n位小数
//字符串 --表示保留前n个字符
l long
ll long long int
h 相当于short 两个字节 h表示half 一半
hh 相当于char 一个字节
%Lf //表示打印 long double
scanf();
功能: 格式化输入
scanf("格式控制字符串",地址列表)
格式控制字符串: //类似printf
普通字符 //原样输入 --scanf中一般不写不同字符 只写占位符
占位符 //将输入的数字等转换为指定的格式
输入时 占位符 与 数据类型要做到严格匹配
整型数据:
%d --- 转换为 有符号十进制形式
%o --- 转换为 八进制形式
%x --- 转换为 十六进制形式
x可以是大写,大写 表示 输出的十六进制中的字母 统统都是大写
%u --- 转换为 无符号十进制形式
浮点型:
%f --- 以十进制形式的小数输出,默认保留6位小数
%e --- 以科学计数法形式的输出小数
%g --- 以一种更简洁的方式输出,输出中不会打印无用0
字符型:
%c --- 转换为 字符形式 输出
%s --- 转换为 字符串形式 输出 //数组的时候 再说
地址列表:
&a //& 取地址运算符
注意:
1. 空白符 (空格,回车,tab键)
2. scanf("%d\n"); //注意最后\n 是空白符 --作用表示匹配任意多个空白符
3. scanf匹配数据结束的情况
a.遇到非法字符 匹配结束
b.超出了指定宽度
输入缓冲区
scanf("%d,%d,%d",&a,&b,&c);
123,456,789\n ---> |123,456,789\n| 输入缓冲区
123a456