在 C 语言中打印格式化文本
Jinku Hu
2023年10月12日
本文将介绍几种在 C 语言中打印格式化文本到控制台的方法。
使用带有%s
指定符的 printf
函数打印字符串
printf
函数是标准输入/输出库中使用最多的部分之一。实际上,有一整套专门用于多种场景的 printf
函数,所有这些函数在这个网页上都有详细的记录。在本文中,我们只演示使用 printf
函数进行格式化输出。
printf
的独特之处在于它可以接受可变数量的参数。也就是说,函数参数可以分为格式字符串和其他参数两部分。格式字符串指定了函数的格式化部分,它包括普通字符和以%
符号开头的指定符。最简单的形式在下面的例子中演示,在第一次调用中,printf
将字符串本身作为唯一的参数,第二次调用在格式字符串中声明一个%s
的指定符,后面是字符串变量参数。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
const char* str1 = "fabulae mirabiles";
printf("String literal\n");
printf("%s\n", str1);
exit(EXIT_SUCCESS);
}
输出:
String literal
fabulae mirabiles
格式字符串的另一个有用的功能是指定从传递给函数的字符串参数中显示多少个字符。接下来的示例代码演示了这个问题的两种解决方案。
第一个将表示字符数的整数放在%
和 s
符号之间;因此,从给定的字符串参数中只打印 6 个字符。第二种 printf
调用将*
字符代替,让用户从其中一个参数中传递积分值。后一种方法的好处是可以在运行时计算出值,而前一种方法需要硬编码。请注意,在这两种情况下,%
符号后面的 .
是必要的。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
const char* str1 = "fabulae mirabiles";
printf("%.6s\n", str1);
printf("%.*s \n", 6, str1);
exit(EXIT_SUCCESS);
}
输出:
fabula
fabula
使用 printf
函数和%i
指定符来打印整数
printf
可以打印不同表示方式的整数。常见的方法包括修改显示整数的基数。整数参数可以用%i
或%d
指定符表示。正数和负数都是自动格式化的,除了正数不显示加号外,可以用明确的指定符%+i
来表示。十六进制和八进制数字可以用%x
和%o
指定符相应地输出。%X
指定符显示大写字母格式的十六进制数字。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("%i %d %.6i %+i %i\n", 11, 22, 12, 41, -31);
printf("%.4x %x %X %#x\n", 126, 125, 125, 100);
printf("%.4o %o\n", 8, 11);
exit(EXIT_SUCCESS);
}
输出:
11 22 000012 +41 -31
007e 7d 7D 0x64
0010 13
作者: Jinku Hu