Untitled Web Page

とある高専生の割と誰得なウェブページです。

標準出力

(CUI)プログラミングに欠かせないデータの出力方法について説明する。

文字列の出力

文字列をプロンプト上に出力するには printf() 関数を使う。ただし,stdio.h をインクルード(#include <stdio.h>)しなければならない

たとえば「hello, world」という文字列をプロンプト上に出力するには以下のコードを main() 関数内に書く。なお,\(バックスラッシュ) はフォントによっては ¥ とも表示される。

printf("hello, world\n");

ここで,\n は「改行」を意味している。\nエスケープ シーケンスと呼ばれ,下に挙げるようなものがある。

エスケープ シーケンスの例 [1]
文字列 意味
\a 警告音
\f ページ送り
\n 改行
\r 同じ行の先頭に戻る
\t 水平タブ
\v 垂直タブ
\\ \」(「¥」) の表示
\' '」(アポストロフィー)の表示
\" "」(ダブルクォーテーション)の表示
\0 ヌル文字

数値・文字の出力

まず整数や小数(浮動小数点数)を出力するには次のように書く。

printf("%d\n", 123);
printf("%f\n", 10.5);

123
10.500000

このように,整数値の出力には %d浮動小数点数の出力には %f または %lf を用いる。ただし,実際にソースコードを組んで実行してみると分かるが,浮動小数点数は(デフォルトで)小数点以下 6 桁出力される

浮動小数点数を小数点以下 6 桁以外で表示するには,%.桁数f または %.桁数lf という風に %f(lf) の前に,.(ドット,ピリオド) に続けて桁数を書く。下に例を挙げる。

printf("%.3f\n", 3.141592);   /* 小数点以下3桁まで表示 */

3.142

このように,四捨五入して表示される。

次に文字を出力するには次のように書く。

printf("%c\n", 'A');

A

このように,文字の出力には %c を用い,これに対応する引数の文字は ' でくくる。ただし,この方法で出力できるのは 1 文字だけである。C 言語や C++ などのプログラミング言語では「文字」と「文字列」は区別される

%d%c などを変換仕様といい,次のようなものがある。

変換仕様
文字列 意味
%d 10 進整数値
%o 8 進整数値
%x 16 進整数値
%f 浮動小数点小数値
%lf 浮動小数点小数値
%c 1 文字
%s 文字列
%p 変数のアドレス

複数の値(数値・文字)の出力

複数の数値や文字を出力するには,次のようにする。

printf("数値:%d, 文字:%c\n", 19, 's');

数値:19, 文字:s

このように変換仕様を複数書くと printf() の第 2 引数から順番に対応して出力される。

printf()
printf() 関数の引数の対応

まとめ

printf() 関数

printf() 関数
ヘッダ ファイル stdio.h
書式 [2] int printf(const char *format, ...);
戻り値 int [3] 出力成功:転送したバイト数
出力失敗:負の値
引数 const char *format 表示する文字列や変換仕様
第 2 引数以降(省略可) 変換仕様がある場合に,それに対応する値

エスケープ シーケンス

エスケープ シーケンスの例 [1]
文字列 意味
\a 警告音
\f ページ送り
\n 改行
\r 同じ行の先頭に戻る
\t 水平タブ
\v 垂直タブ
\\ \」(「¥」) の表示
\' '」(アポストロフィー)の表示
\" "」(ダブルクォーテーション)の表示
\0 ヌル文字

変換仕様

変換仕様
文字列 意味
%d 10 進整数値
%o 8 進整数値
%x 16 進整数値
%f 浮動小数点小数値
%lf 浮動小数点小数値
%c 1 文字
%s 文字列
%p 変数のアドレス

参考