🚪 はじめてのC
🎯 書式指定子とエスケープシーケンスを使い分け、思いどおりの形で値を表示できる
printf は print formatted——「書式を指定して出力する」という名前です。文字を出すだけでなく、数値を好きな形に整えて表示できます。ここを押さえると、プログラムの結果が一気に読みやすくなります。
書式指定子——値の差し込み口
#include <stdio.h>
int main(void) {
int nin = 4;
double kin = 1250.5;
printf("%d人で%.1f円です\n", nin, kin);
return 0;
}出力は 4人で1250.5円です です。%d や %.1f が書式指定子で、後ろに並べた値がこの位置へ順番に差し込まれます(変数そのものは次のトラックで詳しくやります)。主なものは次のとおりです。
・%d … 整数(int)
・%f … 小数(double)。%.2f なら小数点以下2桁
・%c … 1文字(char)
・%s … 文字列
・%% … % という記号そのもの
エスケープシーケンス——見えない文字を書く
改行やタブは、文字列の中に直接は書けません。そこで \ で始まる合図を使います。これがエスケープシーケンスです。
#include <stdio.h>
int main(void) {
printf("名前\t点数\n");
printf("さくら\t92\n");
printf("引用符は \" 、区切り記号は \\ です\n");
return 0;
}\n が改行、\t がタブ(桁揃え)、\" が引用符そのもの、\\ がバックスラッシュ(日本語環境では ¥ に見えます)です。
桁を揃える
#include <stdio.h>
int main(void) {
printf("%5d円\n", 120);
printf("%5d円\n", 8400);
printf("[%-8s][%8s]\n", "left", "right");
return 0;
}%5d は5桁分の幅を確保して右詰め、%-8s は8桁で左詰めです。数字の桁が揃うだけで、結果はぐっと読みやすくなります。
罠・注意
指定子と値の型がずれると壊れる。 %d に小数を渡す、%f に整数を渡すといった不一致は、でたらめな数値が出たり、そのまま異常終了したりします。多くはコンパイラが警告してくれるので、警告は必ず読みます。
個数が合わない。 %d が2つあるのに値が1つだと、存在しない場所の値を読みにいきます。運が悪いと落ちます。
% を出したいときは %%。 printf("100%\n") は正しく動きません。
改行し忘れ。 出力が1行につながって見えるときは、まず \n の有無を確認します。
\n を付けるか付けないかは、レシートの改行を決めるのと同じ。わざと付けずに、あとから続きを足すのもアリだよ。まとめ
printf は「書式の文字列」+「差し込む値」の順に書きます。%d 整数、%f 小数、%c 文字、%s 文字列。\n 改行、\t タブ、%% と \\ は記号そのもの。型と個数が合っているかは、書いた直後に必ず数えます。
文字や数値を書式指定に従って画面に表示する標準ライブラリの関数のこと。C言語で最も使う頻度が高い関数のひとつに数えられる。%dで整数、%fで小数、%sで文字列というように、値の種類ごとに書式を使い分ける。
printfやscanfで使う%dや%fのような記号のこと。続けて渡す値をどんな型・どんな見た目として扱うかを指定する役割を持つ。指定する型と実際に渡す値の型がずれると、思わぬ表示結果になることがある。
バックスラッシュ\で始まる特殊な文字表現のこと。\nで改行、\tでタブを表すなど、文字だけでは表せない働きを表現できる。画面上には見えない改行やタブといった働きを、文字として書き表す手段になる。
小数を含む数値を扱うための型のこと。floatより広い範囲と高い精度を持ち、実数計算における標準的な選択肢として使われる。小数点以下の桁数が多い計算でも、比較的高い精度を保てるのが特徴。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。