|
>printfの多機能さを知って再勉強しています。
>以下のような表示をprintfの機能でスマートに実現する方法はないでしょうか?
>それぞれの長さを求めてスペースを手動挿入する方法しか思いつきませんでした。
> 現在 理想
> (abcd ): 0 (abcd) : 0
> (efghijk): 1 (efghijk): 1
> (lmn ): 2 (lmn) : 2
こんな感じでは?
const char *strtbl[] = {
"abcd",
"efghijk",
"lmn",
};
int i;
int maxlen = strlen(strtbl[0]);
for( i=1; i<sizeof(strtbl)/sizeof(strtbl[0]); i++ )
{
maxlen = ( maxlen<strlen(strtbl[i]) ) ? strlen(strtbl[i]) : maxlen;
}
for( i=0; i<sizeof(strtbl)/sizeof(strtbl[0]); i++ )
{
printf( "(%s)%*s: %d\n", strtbl[i], maxlen-strlen(strtbl[i]), "", i);
}
|