c语言中printf函数通过格式化字符串控制输出样式。%d输出整数,%f输出浮点数,默认显示6位小数,可通过%.nf指定n位小数;%c输出字符,%s输出字符串,%p输出指针地址,%x或%x输出十六进制,%o输出八进制;使用-实现左对齐,+显示符号,#添加进制前缀;宽度用%n d设定最小宽度,精度用%.nf设定小数位数;长度修饰符h、l、ll分别用于短整型、长整型和长长整型;输出百分号需用%%;printf返回成功输出的字符数,可用于错误检查。例如,可利用返回值判断是否成功打印并输出相应信息。

C语言中
printf函数通过格式化字符串来控制输出的样式。掌握这些技巧,可以让你更精确地控制输出,让程序输出更清晰、更易读。

解决方案
printf函数的核心在于其格式化字符串,它由普通字符和格式说明符组成。普通字符按原样输出,而格式说明符则会被替换为相应的变量值。
基本格式说明符:
立即学习“C语言免费学习笔记(深入)”;
%d: 输出十进制整数。
%f: 输出浮点数。
%c: 输出字符。
%s: 输出字符串。
%p: 输出指针地址。
%x或
%X: 输出十六进制整数。
%o: 输出八进制整数。
标志: 标志用于修改输出的格式。
-: 左对齐输出。默认是右对齐。
+: 总是显示数值的符号(正号或负号)。 ` `: 正数前加空格,负数前加负号。
#: 对
o、
x、
X分别增加前缀
0、
0x、
0X,对
e、
E、
f强制显示小数点。
宽度和精度: 可以指定输出的最小宽度和精度。
%nd:
n指定输出的最小宽度。如果数值位数小于
n,则用空格填充。
%.nf:
n指定小数点后的位数。
长度修饰符: 用于指定变量的长度。
h: 短整型 (
short) 或无符号短整型 (
unsigned short)。例如,
%hd。
l: 长整型 (
long) 或双精度浮点数 (
double)。例如,
%ld或
%lf。
ll: 长长整型 (
long long)。例如,
%lld。
示例:
#include <stdio.h>
int main() {
int age = 30;
float salary = 5000.50;
char grade = 'A';
char name[] = "Alice";
int *ptr;
int num = 100;
ptr = #
printf("Name: %s, Age: %d, Salary: %.2f, Grade: %c\n", name, age, salary, grade);
printf("Address of num: %p\n", ptr);
printf("Hexadecimal: %x, Octal: %o\n", 255, 255);
printf("Right aligned: %5d\n", age); // 宽度为5,右对齐
printf("Left aligned: %-5d\n", age); // 宽度为5,左对齐
printf("Show sign: %+d\n", age); // 显示符号
long long big_number = 1234567890123;
printf("Big number: %lld\n", big_number);
return 0;
}为什么我的浮点数输出总是显示很多位小数?
默认情况下,
printf输出浮点数时会显示6位小数。如果你想控制小数位数,可以使用
%.nf格式说明符,其中
n是你想要显示的小数位数。例如,
%.2f会显示两位小数。没有设置精度时,编译器会根据浮点数的默认精度进行显示,所以看起来会很多位。
如何在printf中输出百分号本身?
如果你想在
printf中输出百分号
%字符,你需要使用两个百分号
%%。因为单个百分号有特殊的格式化含义。例如:
printf("Discount: 10%%\n"); // 输出:Discount: 10%printf函数的返回值是什么?我应该如何利用它?
printf函数的返回值是成功写入的字符数。如果发生错误,则返回一个负值。可以利用这个返回值来检查输出是否成功。
#include <stdio.h>
int main() {
int count = printf("Hello, world!\n");
if (count < 0) {
printf("Error occurred during printing.\n");
} else {
printf("Successfully printed %d characters.\n", count);
}
return 0;
} 