首页 > 编程笔记 > C语言笔记 阅读:13

C语言printf()输出函数的用法(非常详细)

printf() 是 C 语言的一个输出函数,它的作用是向终端(输出设备,通常是屏幕)输出若干任意类型的数据。

printf() 函数的语法格式如下:
printf(格式控制, 输出列表)

1) 格式控制

格式控制是用双引号括起来的字符串,也称为转换控制字符串。其中包括格式字符和普通字符:

2) 输出列表

输出列表列出的是要进行输出的一些数据,可以是变量或表达式。

例如,要输出一个整型变量,代码如下:
int iInt=10;
printf("this is %d",iInt);
执行上面的语句,输出的字符是“this is 10”。格式控制双引号中的字符是“this is %d”,其中的“this is”字符串是普通字符,而“%d”是格式字符,表示输出的是后面的 iInt 数据。

printf() 是函数,“格式控制”和“输出列表”都是函数参数,因此 printf() 函数的一般形式可表示为:
printf(参数1,参数2,…,参数n)
函数中的每个参数都必须按照给定的格式和顺序依次输出。例如,输出一个字符型变量和整型变量的代码如下:
printf("the Int is %d,the Char is %c",iInt,cChar);
下表列出了有关 printf() 函数的格式字符。

表 1 printf()函数的格式字符
格式字符 功能说明
%d, %i 用来输出有符号的十进制整数
%u 用来输出无符号的十进制整数
%o 用来输出无符号的八进制整数
%x, %X 用来输出无符号的十六进制整数。%x 表示以小写形式输出;%X 表示以大写形式输出
%c 用来输出单个字符
%s 用来输出字符串
%f 用来输出实数,以小数形式输出
%e, %E 用来输出实数,以指数形式输出
%g, %G 以%f或%e中宽度较短的格式输出,不输出无意义的0

注意,printf() 函数中除了 X、E 和 G,其他格式字符必须使用小写字母,如 %d 不能写成 %D。

【实例 1】牛吃草问题。一头牛可以吃 2 千克草,现有 45 千克草,可供几头牛吃饱。首先定义相应的变量,然后利用表达式计算结果,最后用 printf() 函数对结果进行输出。
#include <stdio.h>  /*包含头文件*/
int main()          /*主函数 main*/
{
    int graNum, graSum, num;  /*graNum 为一头牛吃的草量,graSum 为总草量,num 为结果*/
    graNum = 2, graSum = 45;  /*为变量赋值*/
    num = graSum / graNum;    /*利用表达式计算结果*/
    printf("%d cows eat enough\n", num);  /*将结果输出*/
    return 0;                 /*程序结束*/
}
程序中定义了 3 个整型变量,并为变量赋值。第 6 行使用算术表达式计算结果,并将结果赋给变量 num。在 printf() 函数中,使用格式符号“%d”进行输出。

运行程序,结果为:

22 cows eat enough

C语言printf()函数的高级用法

在格式说明中,在“%”符号和上述格式字符间可以插入如下表所示的几种附加符号。

表 2 printf() 函数的附加格式说明字符
附加字符 功能说明
l 用于输出长整型整数,可加在 d、o、x、u 的字母前面
m 用于指定输出数据的字段宽度,数字或字符在域内向右对齐
n 对实数,表示输出 n 位小数;对字符串,表示截取的字符个数
- 用于指定输出的数字或字符在域内向左对齐

如果想输出“%”符号,可在格式控制处使用“%%”进行输出。

【实例 2】打印变幻莫测的“Cyuyan”。
#include <stdio.h>

int main() {
    long iLong = 100000; /* 定义长整型变量,为其赋值 */
    printf("the Long is %ld\n", iLong); /* 使用 %ld 输出长整型变量 */

    printf("the string is: %snihao\n", "Cyuyan"); /* %s,输出字符串 Cyuyannihao(按实际长度输出) */
    printf("the string is: %10snihao\n", "Cyuyan"); /* %10s,输出宽度为 10,右对齐,左补空 */
    printf("the string is: %-10snihao\n", "Cyuyan"); /* %-10s,输出宽度为 10,左对齐,右补空 */
    printf("the string is: %10.2snihao\n", "Cyuyan"); /* %10.2s,输出宽度为 10,截取 2 个字符右对齐输出 */
    printf("the string is: %-10.2snihao\n", "Cyuyan"); /* %-10.2s,输出宽度为 10,截取 2 个字符左对齐输出 */
    return 0;
}
运行结果为:
the Long is 100000
the string is: Cyuyannihao
the string is:     Cyuyannihao
the string is: Cyuyan    nihao
the string is:         Cynihao
the string is: Cy        nihao

相关文章