この記事では、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');
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関数を使うことでターミナルなどに文字列を標準出力し、デバッグや確認を行うことができます。
また、書式を指定することでさらに見やすく表示することができます。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ