跳过正文
  1. 文章/
  2. C/
  3. C语言基础/

4、输入和输出

·1860 字·4 分钟· loading · loading · ·
C C语言基础
GradyYoung
作者
GradyYoung
C语言基础 - 点击查看当前系列文章
§ 4、输入和输出 「 当前文章 」

输出
#

在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:

  • puts():只能输出字符串,并且输出结束后会自动换行。
  • putchar():只能输出单个字符。
  • printf():可以输出各种类型的数据。

printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts()putchar()

格式控制符
#

格式控制符 说明
%c 输出一个单一的字符
%hd、%d、%ld 以十进制、有符号的形式输出 short、int、long 类型的整数
%hu、%u、%lu 以十进制、无符号的形式输出 short、int、long 类型的整数
%ho、%o、%lo 以八进制、不带前缀、无符号的形式输出 short、int、long 类型的整数
%#ho、%#o、%#lo 以八进制、带前缀、无符号的形式输出 short、int、long 类型的整数
%hx、%x、%lx %hX、%X、%lX 以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。
%#hx、%#x、%#lx %#hX、%#X、%#lX 以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。
%f、%lf 以十进制的形式输出 float、double 类型的小数
%e、%le %E、%lE 以指数的形式输出 float、double 类型的小数。如果 e 小写,那么输出结果中的 e 也小写;如果 E 大写,那么输出结果中的 E 也大写。
%g、%lg %G、%lG 以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0。如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写。
%s 输出一个字符串

printf
#

  • %[flag][width][.precision]type
    • [ ] 表示此处的内容可有可无,是可以省略的
    • type 表示输出类型,比如 %d、%f、%c、%lf,type 就分别对应 d、f、c、lf,type 这一项必须有
    • width 表示最小输出宽度,也就是至少占用几个字符的位置,例如,%-9d中 width 对应 9
    • .precision 表示输出精度,也就是小数的位数
      • 当小数部分的位数大于 precision 时,会按照四舍五入的原则丢掉多余的数字;
      • 当小数部分的位数小于 precision 时,会在后面补 0。
    • flag 是标志字符。例如,%#x中 flag 对应 #,%-9d中 flags 对应-

标志字符
#

标志字符 含 义
- -表示左对齐。如果没有,就按照默认的对齐方式,默认一般为右对齐。
+ 用于整数或者小数,表示输出符号(正负号)。如果没有,那么只有负数才会输出符号。
空格 用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。
# 对于八进制(%o)和十六进制(%x / %X)整数,# 表示在输出时添加前缀;八进制的前缀是 0,十六进制的前缀是 0x / 0X。对于小数(%f / %e / %g),# 表示强迫输出小数点。如果没有小数部分,默认是不输出小数点的,加上 # 以后,即使没有小数部分也会带上小数点。

矩形输出
#

#include<stdio.h>

int main(int argc, char *argv[] ){
   int a1 = 10,a2 = 2000,a3 = 14;
   int b1 = 2345,b2 = 21,b3 = 21341;
   int c1 = 123,c2 = 12341,c3 = 2134;

   printf("%-10d%-10d%-10d\n",a1,a2,a3);
   printf("%-10d%-10d%-10d\n",b1,b2,b3);
   printf("%-10d%-10d%-10d\n",c1,c2,c3);
}

10        2000      14        
2345      21        21341     
123       12341     2134 

输入
#

在C语言中,有多个函数可以从键盘获得用户输入:

  • scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
  • getchar()、getche()、getch():这三个函数都用于输入单个字符。
  • gets():获取一行数据,并作为字符串处理。

scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数

格式控制符
#

格式控制符 说明
%c 读取一个单一的字符
%hd、%d、%ld 读取一个十进制整数,并分别赋值给 short、int、long 类型
%ho、%o、%lo 读取一个八进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型
%hx、%x、%lx 读取一个十六进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型
%hu、%u、%lu 读取一个无符号整数,并分别赋值给 unsigned short、unsigned int、unsigned long 类型
%f、%lf 读取一个十进制形式的小数,并分别赋值给 float、double 类型
%e、%le 读取一个指数形式的小数,并分别赋值给 float、double 类型
%g、%lg 既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 float、double 类型
%s 读取一个字符串(以空白符为结束)

scanf
#

#include<stdio.h>

int main(int argc, char *argv[] ){
   int a;
   printf("input one integer:");
   //scanf 的变量前要带一个&符号。&称为取地址符,也就是获取变量在内存中的地址。
   scanf("%d",&a);
   printf("the integer is:%d",a);

   return 0;
}
C语言基础 - 点击查看当前系列文章
§ 4、输入和输出 「 当前文章 」