输入输出相关问题 day4
四:输入输出
一:getchar/putchar
1.int getchar(void)
功能:从键盘获得一个字符 参数:void 返回值:成功时,返回输入字符的ASCII码值
2.int putchar(int c)
功能:将一个字符输出 参数@c 用来接收要输出字符的ASCII码值 返回值:成功时,将输出字符的ASCII码值返回
二:printf
1.int printf(const char *format, ...);
printf
(格式控制字符串,输出列表)
功能:格式化输出转换 参数:格式控制字符串(控制最终输出结果的格式) 输出列表(控制要输出的数据) … //表示可变参数(参数的个数是可变的0,1,…)
三:格式控制字符串
1.普通字符---------原样输出
占位符(%d,%c…)---------占位符的个数一般和后面输出列表的参数一一对应,要用对应的参数替换
2.整型 %d 转换为有符号十进制形式 %u 转换为无符号十进制形式
%x 无符号十六进制 %o 无符号八进制
3.浮点型 %f 十进制小数(默认保留6位小数) %e 科学计数法形式小数
%g 十进制小数(但保持简洁效果:保留有效的数字)
4.字符型 %c 转换对应字符形式 %s 转换为字符串形式
5.辅助控制符: %[辅助控制符(#/m)]d
%#x 打印十六进制的前缀 %#o 打印八进制的前缀
m 控制输出结果的宽度 如果m>实际数据的宽度,输出m列的宽度(右对齐,补空格)
如果m<=实际数据的宽度,以实际数据为准
-m 左对齐
0m 不补空格,补零
.n 小数部分保留n位 .ns---------保留前n个字符
%ld
—默认long int
%d
—默认int
%lld
—long long int
%Ld
—long long int
%f
—float double %Lf
—long double
h %hd
(half) eg:
四:scanf
-
int scanf(const char *format, ...);
scanf(
“格式控制字符串”,地址列表) 功能:将键盘输入的数据转换为对应的格式,存放内存中 -
一般
scanf
的格式控制字符串中,尽量不出现普通字符 -
地址列表处,如果是变量,那么注意&(需要一块内存空间的地址)
segmentation fault //段错误----代码访问到原本不能访问的空间
占位符和地址列表要一一对应(个数相对应)
4.scanf
输入进制问题
a = 10 scanf("%?")
%d—十进制的10 //10
%x—十六进制的10 //16
%o—八进制的10 //8
printf("a = "); //输出scanf("%x",&a); //16scanf("%o",&a); //8scanf("%d",&a); //10printf("a = %d\n",a); //如果scanf是%u(-10),且printf里面也是%u,那么输入就是-42xxxxxxx
5.scanf(“空白符”) 空白符作用表示匹配任意多个空白符 进入了内存缓冲区