getchar putchar
getchar(void):获取一个字符 因为只接收一个数据,所以直接输入数据然后回车后即可,不存在分隔问题cahr ch;ch=getchar();printf("ch=%c",ch); -> ch=?
putchar(int/char): 输出一个字符 putchar('I');putchar(70); ->IF putchar('\007'); ->输出响铃
实际上putchar你给char类型参数,float都可以得到结果
scanf printf
scanf与printf需要给定输入/输出格式。同时你给定的数据也必须和要求的格式与数量相匹配
格式化有如下: 又名格式转换说明符
scanf格式转换说明符
- %s:字符串
- %d:整数
- %f:单精度实数
- %lf:双精度实数
- %c:字符
- %o:八进制整数
- %x:十六进制整数
-
printf格式转换说明符
少了%* 多了一个
%e/E:按指数形式输出实数 输出字符串不需要格式转换说明符%s 可以直接输出 如
printf("hello") char str[]={};printf(str);printf的修饰符
修饰符放在格式转换说明符字母前 如%d 使用修饰符就%?d
修饰符
m(参数正整数):只对正整数数值修饰,输出指定的宽度 实际宽度不足前面补空格 超出实际则不变,按实际输出
int a=123;printf("%4d",a); 输出:空格123
- 修饰符
.n(参数正整数):指定浮点数的小数位数(四舍五入) 默认位数为6 当数值本身不足6位,又指定位数超过6位,输出的最后几位小数是错的
float x=123.44;printf("%.1f,%.7f",x,x); 输出123.4和123.4400024(有问题,精度丢失)
- 修饰符
0(参数为大于等于0):修饰数字,指定数字输出宽度,不足前面补0 注意指定y宽度,写作**0y**
int a=123;printf("%**04d",a**); 得到0123
- 修饰符
-:指定输出的宽度,不足后面补空格。并且左对齐 指定y宽度写作**-y**
如a=123printf(%-4d a) 得到123空格
- 输入结束都是回车
- scanf的多个说明符之间可以是空格,逗号,无分隔 三个及以上的一样 如%d%d,%d 输入时可以
5空格5空格,5- 无分隔时用
空格或者回车分隔输入数据 - 有空格时等同于无分隔
- 逗号分隔时只能用
逗号分隔输入数据
- 无分隔时用
- scanf的参数为变量地址,即
scanf("...",``**&**``?...);
格式控制字符串
还是双引号括起来的字符串,但是sacnf内不能有转义字符和普通字符 如"%d,%c" printf里就可以有转义和普通
