[C言語] 数字の文字列を桁揃えする方法(左寄せ/右寄せ)
C言語で数字の文字列を桁揃えするには、printf関数
を使用します。
右寄せの場合、%nd
の形式指定子を使い、n
に表示する桁数を指定します。
例えば、printf("%5d", 42);
は 42
を5桁分のスペースに右寄せします。
左寄せの場合は、%-nd
の形式指定子を使います。
例えば、printf("%-5d", 42);
は 42
を5桁分のスペースに左寄せします。
- printf関数を使った桁揃えの方法
- 整数や小数の右寄せと左寄せ
- ゼロ埋めとスペース埋めの使い分け
- 文字列を整列させる技術
- 複数の値を同時に表示する方法
printf関数を使った桁揃え
printf関数の基本的な使い方
C言語におけるprintf関数
は、フォーマットされた出力を行うための関数です。
基本的な構文は以下の通りです。
#include <stdio.h>
int main() {
printf("出力したい文字列\n"); // 文字列を出力
return 0;
}
この関数を使用することで、数値や文字列を整形して表示することができます。
フォーマット指定子を使うことで、出力の形式を細かく制御できます。
右寄せの実装方法
右寄せを実現するためには、フォーマット指定子に幅を指定します。
以下のコードは、整数を右寄せで表示する例です。
#include <stdio.h>
int main() {
int number = 42;
printf("%5d\n", number); // 5桁の幅で右寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
42
左寄せの実装方法
左寄せを行うには、フォーマット指定子の前にマイナス記号を付けます。
以下は、整数を左寄せで表示する例です。
#include <stdio.h>
int main() {
int number = 42;
printf("%-5d\n", number); // 5桁の幅で左寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
42
桁数指定の方法
桁数を指定することで、出力の幅を柔軟に調整できます。
以下のコードは、小数点以下の桁数を指定して表示する例です。
#include <stdio.h>
int main() {
double value = 3.14159;
printf("%.2f\n", value); // 小数点以下2桁で表示
return 0;
}
このコードを実行すると、出力は次のようになります。
3.14
数字以外のデータ型での桁揃え
桁揃えは数字だけでなく、文字列にも適用できます。
以下のコードは、文字列を右寄せで表示する例です。
#include <stdio.h>
int main() {
char* text = "Hello";
printf("%10s\n", text); // 10桁の幅で右寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
Hello
このように、printf関数
を使うことで、さまざまなデータ型の出力を桁揃えすることができます。
右寄せの具体例
整数の右寄せ
整数を右寄せで表示するには、printf関数
のフォーマット指定子に幅を指定します。
以下のコードは、整数を右寄せで表示する例です。
#include <stdio.h>
int main() {
int number1 = 5;
int number2 = 123;
int number3 = 4567;
printf("%5d\n", number1); // 5桁の幅で右寄せ
printf("%5d\n", number2); // 5桁の幅で右寄せ
printf("%5d\n", number3); // 5桁の幅で右寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
5
123
4567
小数点付きの数値の右寄せ
小数点付きの数値も同様に右寄せで表示できます。
以下のコードは、小数点以下2桁で右寄せする例です。
#include <stdio.h>
int main() {
double value1 = 3.1;
double value2 = 2.71828;
double value3 = 1.414;
printf("%8.2f\n", value1); // 8桁の幅で右寄せ、小数点以下2桁
printf("%8.2f\n", value2); // 8桁の幅で右寄せ、小数点以下2桁
printf("%8.2f\n", value3); // 8桁の幅で右寄せ、小数点以下2桁
return 0;
}
このコードを実行すると、出力は次のようになります。
3.10
2.72
1.41
文字列の右寄せ
文字列も右寄せで表示することができます。
以下のコードは、文字列を右寄せで表示する例です。
#include <stdio.h>
int main() {
char* text1 = "Hi";
char* text2 = "Hello";
char* text3 = "World";
printf("%10s\n", text1); // 10桁の幅で右寄せ
printf("%10s\n", text2); // 10桁の幅で右寄せ
printf("%10s\n", text3); // 10桁の幅で右寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
Hi
Hello
World
右寄せの際のゼロ埋め
右寄せの際に、空白の代わりにゼロで埋めることも可能です。
ゼロ埋めを行うには、フォーマット指定子の前にゼロを付けます。
以下のコードは、整数をゼロ埋めで右寄せする例です。
#include <stdio.h>
int main() {
int number1 = 5;
int number2 = 123;
int number3 = 4567;
printf("%05d\n", number1); // 5桁の幅でゼロ埋め
printf("%05d\n", number2); // 5桁の幅でゼロ埋め
printf("%05d\n", number3); // 5桁の幅でゼロ埋め
return 0;
}
このコードを実行すると、出力は次のようになります。
00005
00123
04567
このように、右寄せの際にゼロ埋めを使用することで、数値を整然と表示することができます。
左寄せの具体例
整数の左寄せ
整数を左寄せで表示するには、printf関数
のフォーマット指定子にマイナス記号を付けて幅を指定します。
以下のコードは、整数を左寄せで表示する例です。
#include <stdio.h>
int main() {
int number1 = 5;
int number2 = 123;
int number3 = 4567;
printf("%-5d\n", number1); // 5桁の幅で左寄せ
printf("%-5d\n", number2); // 5桁の幅で左寄せ
printf("%-5d\n", number3); // 5桁の幅で左寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
5
123
4567
小数点付きの数値の左寄せ
小数点付きの数値も左寄せで表示できます。
以下のコードは、小数点以下2桁で左寄せする例です。
#include <stdio.h>
int main() {
double value1 = 3.1;
double value2 = 2.71828;
double value3 = 1.414;
printf("%-8.2f\n", value1); // 8桁の幅で左寄せ、小数点以下2桁
printf("%-8.2f\n", value2); // 8桁の幅で左寄せ、小数点以下2桁
printf("%-8.2f\n", value3); // 8桁の幅で左寄せ、小数点以下2桁
return 0;
}
このコードを実行すると、出力は次のようになります。
3.10
2.72
1.41
文字列の左寄せ
文字列も左寄せで表示することができます。
以下のコードは、文字列を左寄せで表示する例です。
#include <stdio.h>
int main() {
char* text1 = "Hi";
char* text2 = "Hello";
char* text3 = "World";
printf("%-10s\n", text1); // 10桁の幅で左寄せ
printf("%-10s\n", text2); // 10桁の幅で左寄せ
printf("%-10s\n", text3); // 10桁の幅で左寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
Hi
Hello
World
左寄せの際のスペース埋め
左寄せの際に、出力の幅を確保するためにスペースで埋めることができます。
以下のコードは、整数を左寄せで表示する例です。
#include <stdio.h>
int main() {
int number1 = 5;
int number2 = 123;
int number3 = 4567;
printf("%-5d\n", number1); // 5桁の幅で左寄せ
printf("%-5d\n", number2); // 5桁の幅で左寄せ
printf("%-5d\n", number3); // 5桁の幅で左寄せ
return 0;
}
このコードを実行すると、出力は次のようになります。
5
123
4567
このように、左寄せを使用することで、数値や文字列を整然と表示することができます。
スペースで埋めることで、視覚的に整った出力を得ることができます。
応用例
フォーマット指定子を使った複数の値の桁揃え
printf関数
を使用して、複数の値を同時に桁揃えして表示することができます。
以下のコードは、整数と小数を混在させて表示する例です。
#include <stdio.h>
int main() {
int number = 42;
double value = 3.14159;
printf("%-10d %-10.2f\n", number, value); // 整数と小数を左寄せで表示
return 0;
}
このコードを実行すると、出力は次のようになります。
42 3.14
動的に桁数を指定する方法
桁数を動的に指定することも可能です。
以下のコードは、変数を使って桁数を指定する例です。
#include <stdio.h>
int main() {
int width = 8;
int number = 123;
printf("%*d\n", width, number); // 動的に幅を指定
return 0;
}
このコードを実行すると、出力は次のようになります。
123
桁揃えを使った表形式の出力
桁揃えを利用して、表形式でデータを整然と表示することができます。
以下のコードは、整数と小数を表形式で表示する例です。
#include <stdio.h>
int main() {
printf("%-10s %-10s\n", "整数", "小数"); // ヘッダー
printf("%-10d %-10.2f\n", 1, 3.14);
printf("%-10d %-10.2f\n", 2, 2.71);
printf("%-10d %-10.2f\n", 3, 1.41);
return 0;
}
このコードを実行すると、出力は次のようになります。
整数 小数
1 3.14
2 2.71
3 1.41
ゼロ埋めとスペース埋めの使い分け
ゼロ埋めとスペース埋めを使い分けることで、出力の見た目を調整できます。
以下のコードは、同じ数値をゼロ埋めとスペース埋めで表示する例です。
#include <stdio.h>
int main() {
int number = 42;
printf("ゼロ埋め: %05d\n", number); // ゼロ埋め
printf("スペース埋め: %5d\n", number); // スペース埋め
return 0;
}
このコードを実行すると、出力は次のようになります。
ゼロ埋め: 00042
スペース埋め: 42
桁揃えを使った数値の整列表示
桁揃えを使用して、数値を整列させることができます。
以下のコードは、複数の数値を整列して表示する例です。
#include <stdio.h>
int main() {
int numbers[] = {1, 23, 456, 7890};
for (int i = 0; i < 4; i++) {
printf("%-5d", numbers[i]); // 左寄せで整列
}
printf("\n");
return 0;
}
このコードを実行すると、出力は次のようになります。
1 23 456 7890
このように、桁揃えを活用することで、データを見やすく整然と表示することができます。
よくある質問
まとめ
この記事では、C言語における数字や文字列の桁揃えの方法について詳しく解説しました。
具体的には、printf関数
を使用した右寄せや左寄せの実装方法、桁数の指定、さらにはゼロ埋めやスペース埋めの使い分けについても触れました。
これらの技術を活用することで、出力をより見やすく整然とした形で表示することが可能になります。
ぜひ、実際のプログラムにこれらのテクニックを取り入れて、出力のフォーマットを改善してみてください。