sprintf函数中的格式 "%%0%dd" 是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sprintf函数中的格式 "%%0%dd" 是啥意思?相关的知识,希望对你有一定的参考价值。

首先“%%”表示在控制台输出一个“%”,注意是一个百分号,相当于转义,然后0相当于一个字符输出,后面“%d”表示输入一个十进制整数,最后一个“d”也作字符输入,假设你在函数中要输出一个整数5。
int x = 5;
printf("%%0%dd",x);
输出结果为:%05d
参考技术A //https://www.nowcoder.com/acm/contest/85/A

#include <stdio.h>
#include <math.h>
#define E exp(1)
int main()

int T, a, b, r, i;
double result, e;
char str[10];
e = exp(1);
scanf("%d", &T);
for (i = 0; i < T; i++) 
scanf("%d%d%d", &a, &b, &r);//r是自定义小数点后位数
result = pow(e, a);
result *= b;
sprintf(str, "%%.%df\\n", r);//把%.rf\\n放入str里面,注意,此时str[0]是%(转义的百分号),str[1]是
.(小数点),str不包含引号,包含换行(换行位是一个字符,ASCII为10)
//        printf("%s",str);
printf(str,result); //str代替"%.rf\\n"
//例如r=3,意思就是printf("%.3f",str);

// printf("%.*f\\n", r, result);    //和上面功能一样,就是把r放进*的位置

return 0;

以上代码实现,输入自定义小数点长度,附上题目和运行结果

sprintf()函数的用法

语法

sprintf(format,arg1,arg2,arg++)
参数描述
format

必需。规定字符串以及如何格式化其中的变量。

可能的格式值:

  • %% - 返回一个百分号 %
  • %b - 二进制数
  • %c - ASCII 值对应的字符
  • %d - 包含正负号的十进制数(负数、0、正数)
  • %e - 使用小写的科学计数法(例如 1.2e+2)
  • %E - 使用大写的科学计数法(例如 1.2E+2)
  • %u - 不包含正负号的十进制数(大于等于 0)
  • %f - 浮点数(本地设置)
  • %F - 浮点数(非本地设置)
  • %g - 较短的 %e 和 %f
  • %G - 较短的 %E 和 %f
  • %o - 八进制数
  • %s - 字符串
  • %x - 十六进制数(小写字母)
  • %X - 十六进制数(大写字母)

附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

  • + (在数字前面加上 + 或 - 来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记)
  • ‘ (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%‘x20s(使用 "x" 作为填充))
  • - (左调整变量值)
  • [0-9] (规定变量值的最小宽度)
  • .[0-9] (规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必须按照以上顺序使用。

arg1 必需。规定插到 format 字符串中第一个 % 符号处的参数。
arg2 可选。规定插到 format 字符串中第二个 % 符号处的参数。
arg++ 可选。规定插到 format 字符串中第三、四等 % 符号处的参数。

 

以上是关于sprintf函数中的格式 "%%0%dd" 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

sscanf,sprintf

C语言中的sprint函数问题

通过sprintf函数来实现的进制转换

Linux中的itoa函数在哪里?

Javascript中的Sprintf(字符串格式)

c语言中的sprintf函数?