C.printf 函数底子

[复制链接]
发表于 2025-9-2 10:57:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. printf 函数底子

1.1 函数原型与头文件

printf 函数是 C 语言中用于格式化输出的标准函数,其函数原型界说在头文件 <stdio.h> 中。详细原型如下:
  1. int printf(const char *format, ...);
复制代码

      
  • const char *format:格式控制字符串,用于指定输出的格式。它由普通字符和格式说明符组成。普通字符将按原样输出,而格式说明符则用于指定后续参数的输出格式。  
  • ...:表示可变参数列表,这些参数将根据格式控制字符串中的格式说明符依次输出。
在使用 printf 函数时,必须包含头文件 <stdio.h>,否则编译器将无法识别该函数。
1.2 格式化输出的基本概念

printf 函数通过格式控制字符串来实现灵活的输出。格式控制字符串中的格式说明符以 % 开头,后跟一个或多个字符,用于指定输出数据的类型和格式。以下是一些常见的格式说明符及其含义:
     格式说明符    含义              %d 或 %i    输出有符号十进制整数。例如:printf("%d", 123); 输出 123。          %u    输出无符号十进制整数。例如:printf("%u", 456); 输出 456。          %f    输出浮点数,默认保留 6 位小数。例如:printf("%f", 3.14159); 输出 3.141590。          %c    输出单个字符。例如:printf("%c", 'A'); 输出 A。          %s    输出字符串。例如:printf("%s", "Hello"); 输出 Hello。          %p    输出指针地点。例如:printf("%p", &var); 输出变量 var 的地点。          %%    输出一个百分号 %。例如:printf("%%"); 输出 %。    格式说明符还可以包含一些可选的修饰符,用于控制输出的宽度、精度、对齐方式等。以下是一些常见的修饰符及其用法:

      
  • 宽度修饰符:指定输出的最小宽度。假如实际输出的宽度小于指定的宽度,则会在左侧或右侧填充空格(默认为右侧)。例如:
    1. printf("%5d", 123); // 输出 "   123",总宽度为 5,左侧填充空格
    2. printf("%-5d", 123); // 输出 "123   ",总宽度为 5,右侧填充空格
    复制代码

  • 精度修饰符:对于浮点数,指定小数点后的位数;对于字符串,指定最大输出长度。例如:
    1. printf("%.2f", 3.14159); // 输出 "3.14",小数点后保留 2 位
    2. printf("%.3s", "Hello"); // 输出 "Hel",字符串的最大长度为 3
    复制代码

  • 对齐修饰符:- 用于左对齐,+ 用于逼迫输出正负号,空格用于在正数前输出空格。例如:
    1. printf("%-5d", 123); // 输出 "123   ",左对齐
    2. printf("%+d", 123); // 输出 "+123",强制输出正号
    3. printf("% d", 123); // 输出 " 123",正数前输出空格
    复制代码

通过公道使用格式说明符和修饰符,printf 函数可以实现灵活多样的格式化输出,满足各种编程需求。# 2. 格式说明符详解
2.1 常见格式说明符

printf 函数的格式说明符是实现格式化输出的焦点,以下是一些常见的格式说明符及其详细用法:
整数格式说明符


      
  • %d 或 %i:用于输出有符号十进制整数。这是最常用的整数格式说明符,实用于正负整数。
    1. printf("Value: %d\n", -123); // 输出:Value: -123
    复制代码

  • %u:用于输出无符号十进制整数。它实用于非负整数,输出时不会体现负号。
    1. printf("Value: %u\n", 456); // 输出:Value: 456
    复制代码

  • %o:用于输出无符号八进制整数。输出时不会体现前缀 0。
    1. printf("Octal: %o\n", 255); // 输出:Octal: 377
    复制代码

  • %x 或 %X:用于输出无符号十六进制整数。%x 输出小写字母,%X 输出大写字母。
    1. printf("Hex: %x\n", 255); // 输出:Hex: ff
    2. printf("Hex: %X\n", 255); // 输出:Hex: FF
    复制代码

浮点数格式说明符


      
  • %f:用于输出十进制浮点数,默认保留 6 位小数。可以通过精度修饰符指定小数点后的位数。
    1. printf("Float: %f\n", 3.1415926); // 输出:Float: 3.141593
    2. printf("Float: %.2f\n", 3.1415926); // 输出:Float: 3.14
    复制代码

  • %e 或 %E:用于输出科学计数法表示的浮点数。%e 输出小写字母 e,%E 输出大写字母 E。
    1. printf("Scientific: %e\n", 3.1415926); // 输出:Scientific: 3.141593e+00
    2. printf("Scientific: %E\n", 3.1415926); // 输出:Scientific: 3.141593E+00
    复制代码

字符和字符串格式说明符


      
  • %c:用于输出单个字符。
    1. printf("Char: %c\n", 'A'); // 输出:Char: A
    复制代码

  • %s:用于输出字符串。可以通过精度修饰符指定最大输出长度。
    1. printf("String: %s\n", "Hello, World!"); // 输出:String: Hello, World!
    2. printf("String: %.5s\n", "Hello, World!"); // 输出:String: Hello
    复制代码

其他格式说明符


      
  • %p:用于输出指针地点。
    1. int var = 10;
    2. printf("Address: %p\n", &var); // 输出指针地址
    复制代码

  • %%:用于输出一个百分号 %。
    1. printf("Percentage: %%\n"); // 输出:Percentage: %
    复制代码

2.2 格式说明符的高级用法

格式说明符还可以联合多种修饰符来实现更复杂的格式化输出,以下是一些高级用法:
宽度修饰符

宽度修饰符用于指定输出的最小宽度。假如实际输出的宽度小于指定的宽度,则会在左侧或右侧填充空格(默认为右侧)。可以通过以下方式指定宽度:

      
  • 固定宽度:直接指定一个整数。
    1. printf("%10d\n", 123); // 输出:         123
    复制代码

  • 动态宽度:使用 * 表示宽度由后续参数指定。
    1. int width = 10;
    2. printf("%*d\n", width, 123); // 输出:         123
    复制代码

精度修饰符

精度修饰符用于控制输出的精度,对于浮点数和字符串有不同的含义:

      
  • 浮点数:指定小数点后的位数。
    1. printf("%.*f\n", 3, 3.1415926); // 输出:3.142
    复制代码

  • 字符串:指定最大输出长度。
    1. printf("%.*s\n", 5, "Hello, World!"); // 输出:Hello
    复制代码

对齐修饰符

对齐修饰符用于控制输出的对齐方式:

      
  • 左对齐:使用 - 修饰符。
    1. printf("%-10d\n", 123); // 输出:123
    复制代码

  • 右对齐:默认对齐方式。
    1. printf("%10d\n", 123); // 输出:         123
    复制代码

符号修饰符

符号修饰符用于控制输出的符号:

      
  • 逼迫体现符号:使用 + 修饰符。
    1. printf("%+d\n", 123<
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表