C 输出

在 C 语言中,我们可以使用 printf() 函数来输出一个内容。printf(),是 “print format(格式化输出)” 的缩写。

语法:

printf(格式, 变量)
printf(字符串)

说明:

如果想要在一个 C 程序中使用 printf() 函数,我们就必须使用 #include 命令来引入 <stdio.h> 这个头文件。也就是说,#include <stdio.h> 这一句代码的目的就是为了让我们在一个 C 程序中使用 printf() 函数,当然也包括下一节介绍的 scanf() 函数。

C 格式化输出

下面将会介绍如何使用 printf() 函数进行各种输出,包括输出一个变量、输出多个变量、格式化输出等。

1. C 输出一个变量

在 C 语言中,我们可以使用 printf(格式,变量)这种方式来进行格式化输出。所谓的格式化输出,指的是以某种格式来输出一个变量。格式化输出是最常见的一种输出方式。

示例 1:printf() 输出一个变量

#include <stdio.h>

int main(void)
{
    int a = 10;
    int b = 20;

    int sum = a + b;
    printf("%d", sum);

    return 0;
}

运行结果如下。

30

分析:

上面这个例子非常简单,其实就是计算 a + b 的结果,然后再使用 printf() 输出出来。实际上,除了 “printf(格式,变量)” 这种方式,我们还可以使用 “printf(格式,表达式)” 这种方式。对于上面例子来说,下面 2 种方式是等价的。

// 方式 1
int sum = a + b;
printf("%d", sum);

// 方式 2
printf("%d", a + b);

如果希望显示的结果是 “a + b = 30”,而不仅仅是 “30” 一个数字,此时又应该怎么做呢?我们可以看一下下面这个例子。

示例 2:输出时加上提示字符

#include <stdio.h>

int main(void)
{
    int a = 10;
    int b = 20;

    int sum = a + b;
    printf("a + b = %d", sum);

    return 0;
}

运行结果如下。

a + b = 30

分析:

printf("a + b = %d", sum); 这一句代码其实非常简单,它有 2 个参数:第 1 个参数是 “a + b = %d”,第 2 个参数是 sum。然后 printf() 会将这2个参数组合在一起。怎么组合呢?也就是将 “a + b = %d” 中 “%d” 替换成 “sum 的值”。注意是替换成 “sum 的值”,而不是替换成 “sum”。因此输出结果就是:a + b = 30。

C 输出一个变量

示例 3:输出格式不一致

#include <stdio.h>

int main(void)
{
    int a = 2025;
    printf("%f", a);
    return 0;
}

运行代码如下。

0.000000

分析:

在这个例子中,a 是 int 类型。但是在使用 printf() 输出 a 时,我们并没有使用 “%d” 格式,而是使用了 “%f” 格式,此时输出结果就会跟预期结果不一样。

所以在实际开发中,对于 printf() 的输出,我们一定要保证前后的格式一致,否则就可能会导致输出结果有问题。

2. C 输出多个变量

有小伙伴就会问了,printf() 函数能不能同时输出多个变量或多个值呢?答案是肯定的,请看下面例子。

示例 4:printf() 输出多个变量

#include <stdio.h>

int main(void)
{
    int a = 10;
    int b = 20;

    int sum = a + b;
    printf("%d + %d = %d", a, b, sum);

    return 0;
}

运行结果如下。

10 + 20 = 30

分析:

在这个例子中,printf() 函数输出了 a、b、sum 这 3 个整型变量。既然有 3 个整型变量,那么前面的“格式”就需要有 3 个 “%d” 才行。实际上,像 %d、%f、%c 这些又叫做“格式符”,我们在下一节会详细介绍。

printf("%d + %d = %d", a, b, sum); 会将所有参数进行组合,不过会严格按照顺序组合,比如 a 对应第 1个 %d,b 对应第 2 个 %d,sum 就是对应第 3 个 %d,如下图所示。

C 输出多个变量

上面这种组合字符串的方式非常有用,在实际开发中我们会大量用到,小伙伴们要认真掌握一下。

示例 5:输出多个变量

#include <stdio.h>

int main(void)
{
    int a = 10;
    int b = 20;
    int c = 30;

    printf("%d\n%d\n%d", a, b, c);
    return 0;
}

运行结果如下。

10
20
30

分析:

对于C 语言输出多个变量或多个值,我们需要注意以下 2 点。

  • 每一个变量都要有一个格式符。就多少个变量,就应该要有多少个格式符。
  • 每一个格式符要和对应位置变量的类型相吻合。

3. 输出时控制小数位数

在 C 语言中,我们在使用 printf() 输出浮点数时,还可以控制小数的位数。

语法:

printf("%0.nf", 变量);

说明:

n 是一个整数,表示只输出 n 位小数。默认情况下,“%f” 格式的小数是 6 位。

示例 6:输出控制小数位数

#include <stdio.h>

int main(void)
{
    float a = 3.1415926;

    printf("%0.1f\n", a);
    printf("%0.2f\n", a);
    printf("%0.3f", a);

    return 0;
}

运行结果如下。

3.1
3.14
3.142

分析:

需要注意的是,当使用 %f 控制小数位数时,printf 会进行四舍五入,这与我们在 “C 类型转换” 一节中讲的直接截断(舍去小数)是不一样的。

4. 输出时控制宽度

使用 C 语言 printf() 函数输出时,我们还可以定义输出数据的宽度。控制宽度有时非常有用,它可以让输出结果看起来更加直观明了。

语法:

printf("%md", 整型);
printf("%m.nf", 浮点型);

说明:

m 是一个整数,表示输出结果占据多少个数字的宽度。对于浮点型数据来说,“%m.nf” 中的 m 表示控制宽度,n 表示保留小数的位数。

示例 7:输出时控制宽度

#include <stdio.h>

int main(void)
{
    printf("%4d%4d%4d%4d", 64, 36, 12, 20);
    return 0;
}

运行结果如下。

  64  36  12  20

分析:

“%4d” 表示该数据占据了 4 个数字的位置,如果自身不满 4 位数,那么就在前面补空格。这种方式可以快速地把多个数以空格方式隔开,从而让我们的输出结果更加一目了然。

对于上面这个例子来说,下面 2 种方式是等价的,只不过方式 1 更加的简单。

// 方式 1
printf("%4d%4d%4d%4d\n", 64, 36, 12, 20);

// 方式 2
printf("  %d  %d  %d  %d", 64, 36, 12, 20);

5. 输出时对齐方式

使用 printf() 函数输出并且给定一个宽度时,默认情况下是右对齐的方式。实际上我们还可以设置左对齐方式。

语法:

printf("%-md", 整型);
printf("%-m.nf", 浮点型);

说明:

设置左对齐很简单,只需要在 “%” 后面加上一个 “-” 就可以了。

示例 8:输出时右对齐(默认情况)

#include <stdio.h>

int main(void)
{
    printf("%4d%4d%4d%4d\n", 1, 2, 3, 4);
    printf("%4d%4d%4d%4d\n", 11, 12, 13, 14);
    printf("%4d%4d%4d%4d\n", 6, 7, 8, 9);
    printf("%4d%4d%4d%4d", 16, 17, 18, 19);
    return 0;
}

运行结果如下。

   1   2   3   4
  11  12  13  14
   6   7   8   9
  16  17  18  19

示例 9:输出时左对齐

#include <stdio.h>

int main(void)
{
    printf("%-4d%-4d%-4d%-4d\n", 1, 2, 3, 4);
    printf("%-4d%-4d%-4d%-4d \n", 11, 12, 13, 14);
    printf("%-4d%-4d%-4d%-4d \n", 6, 7, 8, 9);
    printf("%-4d%-4d%-4d%-4d ", 16, 17, 18, 19);
    return 0;
}

运行结果如下。

1   2   3   4
11  12  13  14
6   7   8   9
16  17  18  19

C 输出字符串

在 C 语言中,我们可以使用 printf(字符串)这种方式来直接输出一个字符串。所谓的字符串,指的是一串字符。对于字符串来说,我们必须使用英文双引号括起来(不能使用英文单引号)。

提示: 除了 printf() 函数,我们还可以使用 puts() 函数来输出字符串。puts() 函数是 C 语言专门用于输出字符串的函数,它的作用是将指定的字符串输出到标准输出,并在末尾自动添加一个换行符。

示例 10:printf() 输出字符串

#include <stdio.h>

int main(void)
{
    printf("绿叶网");
    return 0;
}

运行结果如下。

绿叶网

分析:

如果你使用的开发工具是 VSCode,默认情况下使用 printf() 输出中文是会产生乱码的。对于如何解决中文乱码问题,请查阅 “VSCode 配置 C 开发环境” 这一节的末尾。

到这里小伙伴就会问了,我们能不能直接使用 printf() 输出一个整数、浮点数或字符呢?其实是不可以的,大家可以看一下下面这个例子。

示例 11:printf() 无法直接输出整数

#include <stdio.h>

int main(void)
{
    printf(2025);
    return 0;
}

分析:

当编译上面代码时,VSCode 终端窗口会直接报错。为什么会报错呢?这是因为 printf() 的输出内容必须是一个字符串。如果想要输出一个整数,我们需要这样来写:printf("%d", 2025);。

printf("%d", 2025) 最终输出的本质上是一个字符串 "2025",而不是一个整数 2025。"%d" 其实就是将 2025 替换双引号里面的 %d,最终还是一个字符串。所以小伙伴们一定要记住这么一点:printf() 函数必须输出的是一个字符串,而不能是其他类型。

字符串指的是一串字符,它跟之前介绍的字符(即 char 类型)是不一样的。字符串 本身比较复杂,这里只需要简单了解一下即可,后面我们会花整一章来详细介绍。

C 输出字符

在 C 语言中,我们可以使用 putchar() 函数来快速输出一个字符。putchar() 是 printf()的一种简写方式。

语法:

putchar(字符);

说明:

putchar() 函数接收一个字符作为参数,然后将该字符输出到标准输出(通常是屏幕)。

示例 12:putchar() 输出字符

#include <stdio.h>

int main(void)
{
    char a = 'A';
    putchar(a);
    return 0;
}

运行结果如下。

A

分析:

putchar() 本质上是 printf() 的一种简写方式,下面 2 种方式效果是相同的。

// 方式 1
putchar(a);

// 方式 2
printf("%c", a);

需要注意的是,putchar() 函数一次只能输出一个字符。如果想要输出多个字符,需要多次调用 putchar() 函数。

示例 13:输出字符时换行

#include <stdio.h>

int main(void)
{
    char a = 'A';
    char b = 'B';

    putchar(a);
    putchar(b);

    return 0;
}

运行结果如下。

AB

分析:

由于 putchar() 只能输出一个字符,它本身并不会换行。如果想要在多个输出时进行换行,我们可以使用 putchar('\n'),也可以使用 printf() 来代替。至于使用哪一种,就看自己选择了。

对于这个例子来说,下面 2 种方式效果是相同的。

// 方式 1
putchar(a);
putchar('\n');
putchar(b);

// 方式 2
printf("%c\n", a);
printf("%c", b);

提示: C 语言共有 3 个常用的输出函数:printf()、putchar()、puts()。对于 getchar() 和 gets(),我们在后续章节会详细介绍。

上一篇: C 注释

下一篇: C 输入

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号