一、输入输出
C语言本身没有输入输出语句,即没有输入输出的关键字,ANSI给封装了一组用于输入输出的函数库<stdio.h>,头文件路径为 /usr/include/stdio.h
每个程序至少有一个输出,可以没有输入,
二、输入输出函数
函数:一个独立的程序段,可以做一个单独的功能,
函数三要素:
功能:函数可以实现什么
参数:函数的接口
返回值:1.函数的结果 2.函数的状态
输入-I input---默认输入设备为键盘---stdin
输出-O output---默认输出设备为显示器---stdout
单字符IO : getchar()/ putchar()
格式化IO :scanf()/printf ()
1.getchar
int getchar(void) int表示返回值为整型,void为空
功能:从键盘缓存区获取一个字符,并返回
参数:void 无
返回值:成功 获取到的字符的ascii值
失败 EOF (错误或文件结尾)
阻塞等待,目前所有的输入都会阻塞等待,直到回车提交数据
2.putchar
int putchar
功能:将字符输出到显示器中
参数:int
返回值:成功 输出对应的Ascii值的字符
失败 EOF
3.scanf
格式输入
int scanf (const char *format,…)
功能:按照指定格式从键盘缓存区中获取数据
参数:const char *format---普通字符%修饰符 格式符
返回值:成功 成功读取的项目个数
失败 EOF
普通字符%修饰符 格式符
格式符:
%c 按照字符形式获取
%o 按照八进制形式获取
%d 按照十进制形式获取
%x 按照16进制小写获取
%f 按照浮点型数据获取
%s 按照字符串类型获取
修饰符
h--短整型
l--长整型
m--宽度;
注意:scanf(“%c”,ch) ; 等价于 ch=getchar();
scanf 会忽略空白符 1.空格 2.tab键 3.回车
scanf在获取%s数据时不加&,其余都需要加&
printf (const char *format,…)
功能:按照指定格式将数据输出到显示器
参数:const char *format---普通字符%修饰符 格式符
返回值:printf实际输出的字符数
格式符
%c 按照字符形式输出
%o 按照八进制形式输出
%d 按照十进制形式输出
%x 按照16进制小写输出
%f 按照浮点型数据输出
%s 按照字符串类型输出
%p 按照地址形式输出
修饰符
h --短整型
l --长整型
m --位域长度
.n --精度
# --自带格式(八进制 十进制)
0 --填充值
+ --整数自带 右对齐
- --左对齐
%+05d +0123 右对齐
打印地址
printf(“%p”,&num);
printf(“%p”,str);
拓展:
%-6.2e -表示左对齐,6表示带小数点6位宽,2表示小数点后2位小数,e表示用科学计数法表示
2.14e+02
面试 printf(“%d %d %d\n”,num++, ++num,num++);
- printf有一个入栈过程,先进后出,第一个进来最后一个出
栈相当于弹夹,第一个放进去最后一个出来;
- 优先级 后置++的优先级高于前置++,先算后置++
- 编译器不一样,结果不一样
- 汇编指令不同