我在下面撰寫的這個 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" );
}
uj5u.com熱心網友回復:
在這個電話之后
sprintf ( format, "%%%ds\n", length );
字串格式看起來像
"%Ns\n"
其中 N 是運算式長度的值。
兩個相鄰的符號%%
以字串格式寫成一個符號%
。
來自 C 標準(7.21.6.1 fprintf 函式)
8 轉換說明符及其含義是:
% 一個 % 字符被寫入。沒有引數被轉換。完整的轉換規格應為%%
試試這個簡單的演示程式。
#include <stdio.h>
int main( void )
{
char s[2];
sprintf( s, "%%" );
puts( s );
}
它的輸出是
%
所以 printf 的下一個呼叫看起來像
printf ( "%Ns\n", *ch_pp );
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/470636.html