1. printf的格式化显示
格式说明符 | 输出内容 |
---|---|
%d | 十进制整数 int |
%i | 十进制整数,用于将其他进制进行十进制输出 |
%u | 无符号十进制整数 unsigned int |
%zu | 例如size_t (无符号的int类型) |
%ld | long有符号长整型 |
%lu | unsigned long (无符号的长类型) |
%lld | long long 有符号长长整型 |
%llu | unsigned long long (无符号的长类型) |
%hd | short (有符号短整型) |
%hu | unsigned short (无符号的长类型) |
%lf | 浮点数double |
%f | 浮点数float |
%s | 字符串 |
%c | 字符 |
%p | 指针的值--地址信息 |
%x | 十六进制整数,其中%#x表示输出前缀0x |
%o | 八进制整数,其中%#o表示输出前缀0o |
%% | 百分号(%) |
%e %E | 将数据进行科学计数表示,例如1000=1.0*10^3 |
- | 无符号整数左对齐输出,空格填充负数右对齐输出。 |
+ | 表示在输出正数时显示正负号。 |
0 | 用0来填充输出的宽度。 |
%10.2f | 例如,我们可以使用格式说明符%10.2f,这意味着如果数的长度小于10,那么将在其左侧填充空格,使其总长度为10。如果数的长度大于10,那么将按原样输出。 |
#include <stdio.h>
int main() {
//1.不同类型的输出显示
int a = 10;
unsigned int b = 20;
float c = 3.14;
char d = 'A';
char* e = "Hello, world!";
int* p = &a;
printf("整数:%d\n", a); // 输出:整数:10
printf("无符号整数:%u\n", b); // 输出:无符号整数:20
printf("浮点数:%f\n", c); // 输出:浮点数:3.140000
printf("字符:%c\n", d); // 输出:字符:A
printf("字符串:%s\n", e); // 输出:字符串:Hello, world!
printf("指针:%p\n", p); // 输出:指针:0x7fffc564fb1c (这会是你进程的地址空间中的某个位置)
printf("十六进制整数:%x\n", a); // 输出:十六进制整数:0xa
printf("八进制整数:%o\n", a); // 输出:八进制整数:012
printf("百分比:%%\n"); // 输出:百分比:%
//2.对于特定类型的整齐显示
int a = 123;
int b = 4567;
float c = 3.14159;
float d = 0.234567;
printf("整数:%10d\n", a); // 输出:整数: 123
printf("整数:%10d\n", b); // 输出:整数: 4567 4567
printf("浮点数:%.2f\n", c); // 输出:浮点数:3.14
printf("浮点数:%.2f\n", d); // 输出:浮点数:0.23
//3.对于显示+-号以及左对齐
int a = 10;
int b = -20;
printf("整数:%+d\n", a); // 输出:整数: +10
printf("整数:%-10d\n", a); // 输出:整数: 10 (左侧填充空格)
printf("整数:%+d\n", b); // 输出:整数: -20
printf("整数:%-10d\n", b); // 输出:整数: -20 (左侧填充空格)
return 0;
return 0;
}
2. sprintf的格式化输入
sprintf
是一个 C 语言库函数,用于将格式化的数据写入字符串中。其与printf的根本区别主要是printf是将信息显示到界面cmd中,而sprintf
是将printf要输出的信息写入到字符串里。
#include <cstdio>
int main() {
char buffer[50];
int a = 10;
float b = 3.14;
std::sprintf(buffer, "整数是 %d, 浮点数是 %f", a, b);
std::printf("%s\n", buffer);
return 0;
}
需要注意的是,std::sprintf
可以导致缓冲区溢出,因此在使用时需要确保目标缓冲区足够大,能够容纳写入的字符串。同时,由于 std::sprintf
是 C 语言库函数,因此在使用时需要小心处理数据类型和格式化字符串的匹配问题,以避免出现类型不匹配和格式化错误等问题。
其与printf公用格式参数表。