"%%%ds" c 程序格式化文本是什么意思?



我在下面写的c代码用于在字符串中居中。我找不到"%%%"的解释。在程序中意味着什么以及它是如何工作的。d表示int, s表示string,但这三个百分比符号对我来说很模糊。什么是"%%%ds"它是如何工作的?

/************************************************
formattCentre.c
example of formatting text to centre
************************************************/
#include<stdio.h>
#include<string.h>
char *verse[] =
{
"The quick brown fox",
"Jumps over the lazy dog",
NULL
};
int main()
{
char **ch_pp;
/* centre the data */

for ( ch_pp = verse; *ch_pp; ch_pp++ )
{
int length;
char format[10];
length = 40 + strlen ( *ch_pp ) / 2;  /* calculate the field length  */
sprintf ( format, "%%%dsn", length ); /* make a format string.       */
printf ( format, *ch_pp );       /* print the lines*/
}
printf( "n" );
}

调用结束后

sprintf ( format, "%%%dsn", length );

字符串格式看起来像

"%Nsn"

,其中N为表达式长度的值。

相邻的两个符号%%以字符串格式写成一个符号%

选自C标准(7.21.6.1 fprintf函数)

8转换说明符及其含义为:

%写入一个%字符。没有参数被转换。完整的转换规格为%%

试试这个简单的示范程序。

#include <stdio.h>
int main( void )
{
char s[2];
sprintf( s, "%%" );
puts( s );
}

输出为

%

所以下一个printf调用看起来就像

printf ( "%Nsn", *ch_pp ); 

最新更新