#include <stdio.h> int main() { printf("%*s\n", 5, "aa"); // ' aa' が出力される(左3文字空白) printf("%*s\n", 5, "aaaabbbb"); // 'aaaabbbb' が出力される printf("%.*s\n", 5, "aaaabbbb"); // 'aaaab' が出力される return 0; } つまり、* は引数で表示する文字数を定義できるということですね。* だけだと、定義文字長を超えた文字列が与えられると全部表示されますが、.と組み合わせることで、定義文字長で切って表示することが可能です。 この書式を使う場面としては、整形もそうですが、どんな長さの文字列が来るかわからない場合にとりあえずバッファのMAXサイズでぶった切る。ってのにも使えそうですね。まぁ、そういう場合はちゃんと長さチェック