C言語

【C言語】printf関数の使い方

この記事では、C言語のprintf関数の使い方を解説します。printf関数を使うことで文字列をターミナルなどのコマンドラインに出力し、デバッグを円滑に行うことができます。それでは、C言語のprintf関数の使い方を見ていきましょう!

printf関数の使い方

printf関数は、引数に文字列を指定することでその文字列をコンソールなどに標準出力することができます。

#include <stdio.h>
 
int main(void) {
    printf("Hello World");
}

実行結果

Hello World

printf関数には改行が含まれないので、改行させたい場合には\nを記述します。

#include <stdio.h>
 
int main(void) {
    printf("Hello\nWorld\n");
}

実行結果

Hello
World

変換指定子で変数を出力する

出力する文字列中に変換指定子を記述し、printf関数の第二引数以降にデータや変数を指定することで、そのデータを変換指定子に埋め込むことができます。

以下のコードでは、変換指定子%sに文字列リテラル“田中”を埋め込んでいます。

#include <stdio.h>
 
int main(void) {

    printf("name: %s\n", "田中");
}

実行結果

name: 田中

また、変数の値を埋め込むことも、複数の値を指定することもできます。

#include <stdio.h>
 
int main(void) {

    char *name = "田中";
    char *gender = "男";
    
    printf("name: %s, gender: %s\n", name, gender);
}

実行結果

name: 田中, gender: 男

変換指定子は、埋め込む値の型によって異なります。

変換指定子一覧

変換指定子には以下のようなものがあります。

指定子説明
%cchar1文字
%schar*、char[]文字列
%dint、short整数(10進数)
%uunsigned int, unsigned short符号なし整数(10進数)
%oint, short, unsigned int, unsigned short整数(8進数)
%xint, short, unsigned int, unsigned short整数(16進数)
%ffloat浮動小数点数
%efloat浮動小数点数の指数表示
%gfloat浮動小数点数の最適表示
%ldlong倍精度整数(10進数)
%luunsigned long符号なし倍精度整数(10進数)
%lolong, unsigned long倍精度整数(8進数)
%lxlong, unsigned long倍精度整数(16進数)
%lfdouble倍精度浮動小数点数
%adouble倍精度浮動小数点数(16進数)

サンプル

簡単なサンプルを見てみましょう!

#include <stdio.h>
 
int main(void) {
    printf("char: %c\n", 'A');
    printf("char*: %s\n", "ABC");
    printf("int: %d\n", 1);
    printf("整数(16進数): %x\n", 31);
    printf("float: %f\n", 3.14);
}

実行結果

char: A
char*: ABC
int: 1
整数(16進数): 1f
float: 3.140000

書式を設定する

変換指定子は、以下のように記述することができます。

%[フラグ][フィールド幅][.精度]変換指定子

フラグやフィールド幅、精度を指定することで、左詰めしたり表示桁数を指定することができます。それでは1つずつ見ていきましょう!

フラグ

フラグは表示オプションのようなもので、以下が用意されています。

フラグ説明
左詰め
+符号の表示
0フィールドを0で埋める

フィールド幅

フィールド幅を指定することで、出力する文字幅を指定することができます。

#include <stdio.h>
 
int main(void) {
    int num = 1;

    // フィールド幅 5 
    printf("num: %5d\n", num);
    
    // フィールド幅 5 + 左寄せ
    printf("num: %-5d\n", num);

    // フィールド幅 5 + 0埋め
    printf("num: %05d\n", num);
}

実行結果

num:     1
num: 1    
num: 00001

精度

精度は使用する変換指定子によって意味が異なります。

%d

指定した精度よりも桁数が足りない場合、0で埋められます。

#include <stdio.h>
 
int main(void) {
    int num = 123;

    // 精度 2 
    printf("num: %.2d\n", num);
    
    // 精度 5
    printf("num: %.5d\n", num);
}

実行結果

num: 123
num: 00123

%f, %e

小数点以下の桁数を指定できます。

#include <stdio.h>
 
int main(void) {
    float num = 1.0;

    // 精度 5 
    printf("num: %.5f\n", num);
    
    // 精度 2
    printf("num: %.2f\n", num);
}

実行結果

num: 1.00000
num: 1.00

%g

有効数字の桁数を指定できます。

#include <stdio.h>
 
int main(void) {
    float num = 123.456;

    // 精度 2 
    printf("num: %.2g\n", num);
    
    // 精度 5
    printf("num: %.5g\n", num);
}

実行結果

num: 1.2e+02
num: 123.46

%s

最大文字数を指定できます。

#include <stdio.h>
 
int main(void) {
    char *s = "abcdefg";

    // 精度 2 
    printf("num: %.2s\n", s);
    
    // 精度 5
    printf("num: %.5s\n", s);
}

実行結果

num: ab
num: abcde

%を表示する方法

パーセント記号を表示するには%%と記述します。

#include <stdio.h>
 
int main(void) {
    printf("パーセント記号: %%\n");
}

実行結果

パーセント記号: %

まとめ

この記事では、C言語のprintf関数の使い方を解説しました。printf関数を使うことでターミナルなどに文字列を標準出力し、デバッグや確認を行うことができます。また、書式を指定することでさらに見やすく表示することができます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

【おすすめ】C言語参考書