“%%%ds”在 c 程序格式化文本中是什么意思?
What does "%%%ds" mean in a c program formatting text?
我在下面编写的这段 C 代码可以使字符串中的文本居中。
我找不到程序中“%%%ds”的含义及其工作原理的解释。
有 d 代表 int 和 s 代表字符串,但三个百分比符号对我来说是模糊的。
“%%%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, "%%%ds\n", length ); /* make a format string. */
printf ( format, *ch_pp ); /* print the lines*/
}
printf( "\n" );
}
这次通话后
sprintf ( format, "%%%ds\n", length );
字符串格式看起来像
"%Ns\n"
其中 N 是表达式长度的值。
相邻的两个符号%%
写成字符串格式为一个符号%
.
来自C标准(7.21.6.1 fprintf函数)
8 The conversion specifiers and their meanings are:
% A % character is written. No argument is converted. The complete
conversion specification shall be %%
试试这个简单的演示程序。
#include <stdio.h>
int main( void )
{
char s[2];
sprintf( s, "%%" );
puts( s );
}
它的输出是
%
所以 printf 的下一次调用看起来像
printf ( "%Ns\n", *ch_pp );
我在下面编写的这段 C 代码可以使字符串中的文本居中。 我找不到程序中“%%%ds”的含义及其工作原理的解释。 有 d 代表 int 和 s 代表字符串,但三个百分比符号对我来说是模糊的。 “%%%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, "%%%ds\n", length ); /* make a format string. */
printf ( format, *ch_pp ); /* print the lines*/
}
printf( "\n" );
}
这次通话后
sprintf ( format, "%%%ds\n", length );
字符串格式看起来像
"%Ns\n"
其中 N 是表达式长度的值。
相邻的两个符号%%
写成字符串格式为一个符号%
.
来自C标准(7.21.6.1 fprintf函数)
8 The conversion specifiers and their meanings are:
% A % character is written. No argument is converted. The complete conversion specification shall be %%
试试这个简单的演示程序。
#include <stdio.h>
int main( void )
{
char s[2];
sprintf( s, "%%" );
puts( s );
}
它的输出是
%
所以 printf 的下一次调用看起来像
printf ( "%Ns\n", *ch_pp );