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: 男

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

変換指定子一覧

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

指定子 説明
%c char 1文字
%s char*、char[] 文字列
%d int、short 整数(10進数)
%u unsigned int, unsigned short 符号なし整数(10進数)
%o int, short, unsigned int, unsigned short 整数(8進数)
%x int, short, unsigned int, unsigned short 整数(16進数)
%f float 浮動小数点数
%e float 浮動小数点数の指数表示
%g float 浮動小数点数の最適表示
%ld long 倍精度整数(10進数)
%lu unsigned long 符号なし倍精度整数(10進数)
%lo long, unsigned long 倍精度整数(8進数)
%lx long, unsigned long 倍精度整数(16進数)
%lf double 倍精度浮動小数点数
%a double 倍精度浮動小数点数(16進数)

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

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

書式を設定する

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

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

フラグやフィールド幅、精度を指定することで、左詰めしたり表示桁数を指定することができます。

フラグ

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

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

フィールド幅

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

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

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

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

精度

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

変換指定子 意味
%d 指定した精度よりも桁数が足りない場合、0で埋められる
%f, %e 小数点以下の桁数を指定できる
%g 有効数字の桁数を指定できる
%s 最大文字数を指定できる
#include <stdio.h>
 
int main(void) {

    // %d
    int n = 123;
    printf("n: %.2d\n", n);  // n: 123
    printf("n: %.5d\n", n);  // n: 00123

    // %f, %e
    float f = 1.0;
    printf("f: %.2f\n", f);  // f: 1.00
    printf("f: %.5f\n", f);  // f: 1.00000

    // %g
    float g = 123.456;
    printf("g: %.2g\n", g);  // g: 1.2e+02
    printf("g: %.5g\n", g);  // g: 123.46

    // %s
    char *s = "abcdefg";
    printf("s: %.2s\n", s);  // s: ab
    printf("s: %.5s\n", s);  // s: abcde
}

%を表示する方法

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

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

まとめ

この記事では、C言語のprintf関数の使い方を解説しました。

printf関数を使うことでターミナルなどに文字列を出力し、デバッグや確認を行うことができます。また、書式を指定することで見やすく表示することができます。

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

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』