在这里插入图片描述

大家好啊,我是小象٩(๑òωó๑)۶
我的博客:Xiao Xiangζั͡ޓއއ

很高兴见到大家,希望能够和大家一起交流学习,共同进步。*
在这里插入图片描述
这一节我们主要来学习printf函数的基本用法,学习占位符的使用,明白各种输出格式的使用…

一、printf

printf 函数是 C 语言标准输入输出库(<stdio.h>)中提供的一个非常重要且常用的函数,它的主要功能是将指定格式的数据输出到标准输出设备(通常是屏幕)上。通过使用不同的格式控制符,它能够灵活地展示各种类型的数据,如整数、浮点数、字符、字符串等,是实现程序与用户交互、展示程序运行结果的关键手段之一。
一句话:用于向标准输出设备(通常是屏幕)打印格式化的字符串

1.1基本用法

printf() 的作用是将参数文本输出到屏幕。它名字里面的 f 代表 format (格式化),表示可以定制输出文本的格式

printf() 是在标准库的头文件 stdio.h 定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。

#include<stdio.h>
int main()
{
 printf("Hello World");
 return 0;
}

看看结果:
在这里插入图片描述
printf() 不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行
为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符 \n
像这样:

#include <stdio.h>
int main(void) 
{
 printf("Hello World\n");
 return 0;
}

如果文本内部有换行,也是通过插入换行符来实现,如下方代码:

#include <stdio.h>
int main(void) 
{
 printf("Hello\nWorld\n");
 printf("Hello\n");
 printf("World\n");
 return 0;
}

看看结果:
在这里插入图片描述

1.2 占位符

在C语言中,占位符(placeholder) 通常指的是在printf函数或其他格式化输出函数中用于指示将要插入实际数据的字符序列。这些占位符告诉函数在哪里以及如何格式化输出数据。在C语言的printf函数中,占位符以百分号(%)开始,后跟一个或多个字符来指定数据类型和格式。

简单来说,所谓 “占位符”,就是这个位置可以用其他值代入
举个例子:

#include <stdio.h>
int main()
{
 printf("There are %d apples\n", 3);
 return 0;
}

上面例子中, There are %d apples\n 是输出文本,里面的 %d 就是占位符,表示这个位置要用其他值来替换

占位符的第一个字符一律为百分号 % ,第二个字符表示占位符的类型

例子中的==%d 表示这里代入的值必须是一个整数==。

printf() 的第二个参数就是替换占位符的值,上面的例子是整数 3 替换 %d 。执行后的输出结果就是 There are 3 apples 。
看看结果:
在这里插入图片描述
常用的占位符除了 %d ,还有 %s 表示代入的是字符串

#include <stdio.h>
int main()
{
 printf("%s will come tonight\n", "xiaofeixiang");
 return 0;
}

上面例子中, %s 表示代入的是⼀个字符串,所以 printf() 的第二个参数就必须是字符串,也就是后面的 xiaofeixiang 。执行后的输出就是 xiaofeixiang will come tonight 。
看看结果:
在这里插入图片描述

输出文本里面可以使用多个占位符。

举个例子:

#include <stdio.h>
int main()
{
 printf("%s says it is %d o'clock\n", "xiaofeixiang", 5);
 return 0;
}

上面例子中,输出文本 %s says it is %d o’clock 有两个占位符,
第一个是字符串占位符 %s 对应 printf() 的第二个参数 xiaofeixiang ,第二个是整数占位符 %对应着第三个参数 5 ,
执行后的输出就是 xiaofeixiang says it is 5 o’clock 。

printf() 参数与占位符是一一对应关系,如果有 n 个占位符, printf() 的参数就应该有 n + 1个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。

1.3 占位符列举

printf() 的占位符有许多种类,与 C 语言的数据类型相对应。下面按照字母顺序,列出常用的占位符,方便查找,具体含义在后面章节介绍。
• %a :十六进制浮点数,字母输出为小写。
• %A :十六进制浮点数,字母输出为⼤写。
%c :字符
%d :十进制整数// int
• %e :使用科学计数法的浮点数,指数部分的 e 为小写。
• %E :使用科学计数法的浮点数,指数部分的 E 为大写。
• %i :整数,基本等同于 %d 。
%f :小数(包含 float 类型和 double 类型)//float %f double - %lf
• %g :6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e为小写。
• %G :等同于 %g ,唯一的区别是指数部分的 E 为大写。
%hd :十进制 short int 类型
• %ho :八进制 short int 类型。
• %hx :十六进制 short int 类型。
%hu :unsigned short int 类型
%ld :十进制 long int 类型
• %lo :八进制 long int 类型。
• %lx :十六进制 long int 类型。
%lu :unsigned long int 类型
• %lld :十进制 long long int 类型。
• %llo :八进制 long long int 类型。
• %llx :十六进制 long long int 类型。
• %llu :unsigned long long int 类型。
• %Le :科学计数法表示的 long double 类型浮点数。
%Lf :long double 类型浮点数
• %n :已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
• %o :八进制整数。
%p :指针(用来打印地址)
%s :字符串
%u :无符号整数(unsigned int)
%x :十六进制整数
%zd : size_t 类型
• %% :输出⼀个百分号。

1.4 输出格式

printf() 可以定制占位符的输出格式

1.4.1 限定宽度

printf() 允许限定占位符的最小宽度

#include <stdio.h>
int main()
{
 printf("%5d\n", 123); 
 return 0;
}

上面例子中, %5d 表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。

输出的值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的 % 的后面插入一个 - 号

看看结果:
在这里插入图片描述
像这样:

#include <stdio.h>
int main()
{
 printf("%-5d\n", 123); // 输出为 "123 "
 return 0;
}

上面例子中,输出内容 123 的后面添加了空格。

而对于小数,这个限定符会限制所有数字的最小显示宽度

举个例子:

// 输出 " 123.450000"
#include <stdio.h>
int main()
{
 printf("%12f\n", 123.45);
 return 0;
}

上面例子中, %12f 表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位,所以 123.45 输出结果的头部会添加2个空格

1.4.2 总是显示正负号

默认情况下

printf() 不对正数显示 + 号,只对负数显示 - 号

如果想让正数也输出 + 号,可以在占位符的 % 后面加一个 +
举个例子:

#include <stdio.h>
int main()
{
 printf("%+d\n", 12); 
 printf("%+d\n", -12); 
 return 0;
}

上面例子中, %+d 可以确保输出的数值,总是带有正负号。
看看结果:
在这里插入图片描述

1.4.3 限定小数数位

输出小数时,有时希望限定小数的位数。举例来说,希望小数点后面只保留两位,占位符可以写成 %.2f 。
举个例子:

// 输出 Number is 0.50
#include <stdio.h>
int main()
{
 printf("Number is %.2f\n", 0.5);
 return 0;
}

看看结果:
在这里插入图片描述
上面例子中,如果希望小数点后面输出3位( 0.500 ),占位符就要写成 %.3f 。
这种写法可以与限定宽度占位符,结合使用。
举个例子:

#include <stdio.h>
int main()
{
	printf("%7.2f\n", 0.123);
	return 0;
}

上面例子中, %7.2f 表示输出字符串最小宽度为7,小数位数为2。所以,输出字符串的头部有三个空格。

看看结果:
在这里插入图片描述

最小宽度和小数位数这两个限定值,都可以用 * 代替,通过 printf() 的参数传入。

举个例子:

#include <stdio.h>
int main()
{
 printf("%*.*f\n", 5, 2, 0.1);
 return 0;
}
// 等同于printf("%5.2f\n", 0.1);

上面例子中, %*.*f 的两个星号通过 printf() 的两个参数 5和 2 传入。
看看结果:
在这里插入图片描述

1.4.4 输出部分字符串

%s 占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以用%.[m]s 指定输出的长度,其中 [m] 代表一个数字,表示所要输出的长度。
举个例子:

// 输出 hello
#include <stdio.h>
int main()
{
 printf("%.5s\n", "hello world");
 return 0;
}

上面例子中,占位符 %.5s 表示只输出字符串“hello world”的前5个字符,即“hello”。
看看结果:
在这里插入图片描述

二、结尾

这一课的内容就到这里了,下节课继续学习C语言的scanf函数
如果内容有什么问题的话欢迎指正,有什么问题也可以问我!
在这里插入图片描述

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐