C言語のprintfで出力を整列させる方法|左寄せ・右寄せの書式指定を解説
C言語のprintf文では、ジャスティフィケーション(整列指定)を使うことで、データを任意の形式で整えて出力できます。名前や数値を表形式で表示したい場合など、出力を見やすく整えるのに非常に便利な機能です。
左寄せ(左揃え)の指定方法
左寄せで出力するには、フィールド幅の値の前にマイナス記号(-)を挿入します。
printf("%-15s", text);この例では、文字列を幅15のフィールド内で左寄せして表示します。文字列が15文字に満たない場合は、右側が空白で埋められます。
右寄せ(右揃え)の指定方法
一方、右寄せはデフォルトの動作です。マイナス記号を付けずにフィールド幅だけを指定すると、文字列や数値は右寄せで表示されます。
printf("%15s", text);プログラム1:左寄せで表形式に出力する
次の例では、左寄せのジャスティフィケーションを使って、データを行・列形式で見やすく出力しています。
#include<stdio.h>
int main(){
char a[20] = "Names", b[20]="amount to be paid";
char a1[20] = "Bhanu", b1[20]="Hari",c1[20]="Lucky",d1[20]="Puppy";
int a2=200,b2=400,c2=250,d2=460;
printf("%-15s %-15s\n", a, b);
printf("%-15s %-15d\n", a1,a2);
printf("%-15s %-15d\n", b1,b2);
printf("%-15s %-15d\n", c1, c2);
printf("%-15s %-15d\n", d1, d2);
return 0;
}
実行結果
Names amount to be paid
Bhanu 200
Hari 400
Lucky 250
Puppy 460
すべての項目が左端を揃えて表示され、きれいな表形式になっていることがわかります。
プログラム2:右寄せで出力する
同じ例を、整列の指定を変えて右寄せで出力した場合を見てみましょう。
#include<stdio.h>
int main(){
char a[20] = "Names", b[20]="amount to be paid";
char a1[20] = "Bhanu", b1[20]="Hari",c1[20]="Lucky",d1[20]="Puppy";
int a2=200,b2=400,c2=250,d2=460;
printf("%2s %2s\n", a, b);
printf("%5s %5d\n", a1,a2);
printf("%2s %2d\n", b1,b2);
printf("%5s %5d\n", c1, c2);
printf("%2s %2d\n", d1, d2);
return 0;
}
実行結果
Names amount to be paid
Bhanu 200
Hari 400
Lucky 250
Puppy 460
注意点
フィールド幅が文字列の長さより短い場合(例:%2sに"Names"のような5文字の文字列を渡す場合)、指定した幅は無視され、文字列全体がそのまま表示されます。また、適切な整列指定を行わないと、出力の位置が揃わず表形式が崩れてしまいます。表形式でデータを表示する際は、各列の最大文字数に合わせて十分なフィールド幅を指定することが重要です。
-
【C言語】挿入ソートの仕組みと実装方法をわかりやすく解説
ソート(整列)とは、データの要素を昇順または降順のいずれかの順序に並べ替える処理のことです。C言語ではさまざまなソートアルゴリズムを実装でき、それぞれ計算量や特性が異なるため、目的に応じた使い分けが重要になります。 C言語で使われる主なソートの種類 C言語でよく利用されるソート手法には、次の5つがあります。 バブルソート(交換ソート) 選択ソート 挿入ソート(線形ソート) クイックソート(分割交換ソート) マージソート(外部ソート) 挿入ソートとは 挿入ソートは、整列済みの部分に新しい要素を適切な位置へ「挿入」していくことで、配列全体を並べ替えるアルゴリズムです。トランプの手札を順番に整
-
C言語の条件分岐を完全解説!フローチャートとサンプルプログラムで学ぶ意思決定処理
C言語における「意思決定(条件分岐)」とは、条件が真(True)か偽(False)かを判定し、その結果に応じて実行する処理を切り替える仕組みです。プログラムに柔軟な制御を持たせるために欠かせない概念であり、以下のような分岐文があります。単純if文(simple – if statement)if–else文ネストしたif–else文else–ifラダーswitch文本記事では、それぞれの構文・フローチャート・サンプルプログラムと実行結果を順番に解説していきます。1. 単純if文(simple – if statement)「if」キーワードは、論理条件が真である場合に、一連のステートメントを実