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里就可以有转义和普通