我在下面写的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 );