printf関数の変換指定子
当ページのリンクには広告が含まれています。
スポンサーリンク
変数の値を出力で、触れた printf 関数の変換指定子の詳細を紹介します。
printf 関数の変換指定子
まずは、変換指定子の書式を確認します。
%[フラグ][最小フィールド幅][.精度][修飾子]変換指定子
パーセント「%」からはじまり、さまざまな要素で修飾しながら、最後に変換指定子を指定します。
※ 角括弧[] で記述している部分は省略可能です。例えば[フラグ]など。
それでは変換指定子の書式をひとつずつみていきましょう。
フラグ
フラグは、変換指定子の表示オプションみたいものです。
フラグ | |
---|---|
- | フィールドの左寄せ |
+ | 正の数値であれば数値の前に「+」を付加 |
0 | フィールドの「0」埋め |
最小フィールド幅.精度
最小フィールドは、出力の桁数です。桁数(文字数)を揃えたいときに利用します。「フラグ」の「0」などを合わせて利用します。
修飾子
修飾子は変換指定子の精度を修飾し、以下のようなものがあります。
修飾子 | |
---|---|
h | 精度を半分にします。short や signed |
l | 精度を倍にします。long や unsigned |
[修飾子]変換指定子
[修飾子]変換指定子と変数の型の対応表です。
[修飾子]変換指定子 | 変数の型 | 概要 |
---|---|---|
%c | char | 文字 |
%s | char * | 文字列 |
%d | int | 10進整数 |
%hd | short int | 半分の精度の10進整数 |
%ld | long int | 倍精度の10進整数 |
%u | unsigned int | 符号なし10進整数 |
%hu | unsigned short int | 符号なし半分の精度の10進整数 |
%lu | unsigned long int | 符号なし倍精度の10進整数 |
%o | int | 8進整数 |
%x | int | 16進整数 |
%f | float | 実数 |
%lf | double | 倍精度の実数 |
%e | float | 実数の指数表示 |
%g | float | 実数の最適表示 |
変換指定子の利用例
変換指定子の利用例をいくつか取り上げてみました。「 」は空白(半角スペース)を表します。
文字列 | ||
---|---|---|
%s | Hello! | |
%8s | Hello! | |
%.2s | He | |
%8.2s | He | |
整数 | ||
%d | 1234 | |
%6d | 1234 | |
%06d | 001234 | |
実数 | ||
%f | 3.141593 | |
%.3f | 3.14 | |
%3.3f | 3.14 |
利用例を実際に出力するプログラムです。
#include <stdio.h> int main(void) { /* 文字列 */ printf("%s\n", "Hello!"); printf("%8s\n", "Hello!"); printf("%.2s\n", "Hello!"); printf("%8.2s\n", "Hello!"); /* 整数 */ int a = 1234; printf("%d\n", a); printf("%6d\n", a); printf("%06d\n", a); /* 実数 */ float b = 3.1415926535; printf("%f\n", b); printf("%.2f\n", b); printf("%3.2f\n", b); }