C++之printf与sprintf用法

1.  printf的格式化显示

格式说明符输出内容
%d十进制整数 int
%i十进制整数,用于将其他进制进行十进制输出
%u无符号十进制整数 unsigned int
%zu例如size_t   (无符号的int类型)
%ldlong有符号长整型
%luunsigned long    (无符号的长类型)
%lld

long  long 有符号长长整型

%lluunsigned long long    (无符号的长类型)
%hdshort   (有符号短整型)
%huunsigned 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公用格式参数表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值