C言語において、変換指定子を使用してデータの出力を行う際に、桁数を制御することが重要です。
変換指定子を正しく使うことで、出力結果のフォーマットを調整することができます。
この記事では、C言語における変換指定子の桁数を制御する方法について解説します。
printfで基本的な指定子の使い方
まず初めに、%dと%fによる変換指定子の基本的な使用法を紹介します。
これらはそれぞれ整数と浮動小数点数の変換指定子です。
#include <stdio.h>
int main() {
int integerNumber = 42;
float floatingPointNumber = 3.14;
printf("整数: %d\n", integerNumber);
printf("浮動小数点数: %f\n", floatingPointNumber);
//整数: 42
//浮動小数点数: 3.140000
return 0;
}
文字列のフォーマット指定子一覧
以下に、printf()、fprintf()、sprintf()などで使用する代表的な出力フォーマット指定子の一覧を、
指定子、対応する型、説明、使用例の4つの項目でテーブル形式にまとめました。
指定子 | 対応する型 | 説明 | 使用例 |
---|---|---|---|
%d | int | 10進数の整数 | printf(“%d”, 42); |
%i | int | 10進数の整数 (%dと同じ) | printf(“%i”, 42); |
%o | int | 8進数の整数 | printf(“%o”, 42); |
%x | int | 16進数の整数 (小文字) | printf(“%x”, 42); |
%X | int | 16進数の整数 (大文字) | printf(“%X”, 42); |
%u | unsigned int | 符号なし整数 | printf(“%u”, 42); |
%f | double | 10進数の浮動小数点数 | printf(“%f”, 3.14); |
%e | double | 指数形式の浮動小数点数 (小文字) | printf(“%e”, 3.14); |
%E | double | 指数形式の浮動小数点数 (大文字) | printf(“%E”, 3.14); |
%g | double | %fまたは%eの短い方で表示 | printf(“%g”, 3.14); |
%G | double | %fまたは%Eの短い方で表示 | printf(“%G”, 3.14); |
%c | char | 文字 | printf(“%c”, ‘A’); |
%s | char* | 文字列 | printf(“%s”, “Hello”); |
%p | void* | ポインタの値 | printf(“%p”, (void*)ptr); |
%*d | int | 幅を引数で指定 | printf(“%*d”, 5, 42); |
%.*f | double | 小数点以下の桁数を引数で指定 | printf(“%.2f”, 3.14159); |
%- | – | 左寄せ | printf(“%-5d”, 42); |
%+ | – | 正の数にも符号を表示 | printf(“%+d”, 42); |
%0 | – | ゼロ埋め | printf(“%05d”, 42); |
%# | – | 浮動小数点数に小数点を表示。16進数の場合、0xを付加 | printf(“%#f”, 3.14); |
%space | – | 正の数には空白、負の数には符号を表示 | printf(“% d”, 42); |
%% | – | パーセント記号を表示 | printf(“50%% off”); |
これらの指定子を適切に組み合わせることで、様々なデータ型をフォーマットして表示することができます。
広告
変換指定子で桁数を指定して表示する
桁数を指定して表示するには、%Ndや%N.Mfのように指定子の後に桁数を追加します。
ここでNは最小幅、Mは小数点以下の桁数です。
#include <stdio.h>
int main() {
int integerNumber = 1;
float floatingPointNumber = 3.1415926535;
// 最小幅を指定して整数を表示
printf("整数: %5d\n", integerNumber);
// 小数点以下の桁数を指定して浮動小数点数を表示
printf("浮動小数点数: %.2f\n", floatingPointNumber);
//整数: 1(空白あり)
//浮動小数点数: 3.14
return 0;
}
広告
左寄せやゼロ埋めを行う
表示を整えるために、左寄せやゼロ埋めを行うこともできます。
左寄せはマイナス記号を左詰めにし、ゼロ埋めは空いている部分をゼロで埋めます。
#include <stdio.h>
int main() {
int negativeNumber = -42;
int positiveNumber = 42;
// 左寄せとゼロ埋めを行う
printf("負の整数(左寄せ): %-5d\n", negativeNumber);
printf("正の整数(ゼロ埋め): %05d\n", positiveNumber);
//負の整数(左寄せ): -42 (空白あり)
//正の整数(ゼロ埋め): 00042
return 0;
}
文字列の最大長を制御する
文字列を表示する際に、最大長を制御することもできます。
これには%.*sを使用します。
#include <stdio.h>
int main() {
char message[] = "Hello, World!";
// 文字列の最大長を5に制限して表示
printf("メッセージ: %.5s\n", message);
//メッセージ: Hello
return 0;
}
広告
まとめ
C言語において、変換指定子を用いてデータの出力を行う際には、桁数を制御することが重要です。
%Ndや%N.Mfの形式を使って、整数や浮動小数点数の表示をカスタマイズすることができます。
左寄せやゼロ埋め、文字列の最大長制御なども組み合わせて利用することで、
より柔軟なフォーマットの出力が可能です。