「C言語の基本」の記事で、画面へ文字列を表示しました。この画面に文字を表示すること、出力すると呼んだりします。「出力する」=「画面に表示する」と覚えておけば大丈夫です。
今回は、画面への出力について、もう少し掘り下げてみたいと思います。
この画面への出力ですが、IoTとして使うC言語では、画面へ出力することはなく、C言語が標準で用意されているprintfは、使用することはないです。
しかし、C言語を学習するうえで、処理の結果を画面に表示して確認する必要があるため、最初に画面への出力について解説しています。
画面に出力するprintf関数の基本
「C言語の基本」の記事で、記載したプログラムを元に説明します。
/* 「C言語入門をはじめよう!」を表示する */
#include <stdio.h>
int main(void)
{
printf("C言語入門をはじめよう!\n");
printf("今回は、C言語の基本です。\n");
return 0;
}
画面に文字を表示したいときは、printf関数(プリントエフ)を使用します。
関数については、別の記事で解説します。ここでは、処理のまとまりに名前を付けたものと考えてください。
つまり、printf は、画面に文字を表示する処理のまとまりで、このprintf(" … "); は、「その処理を実行してほしい」と依頼していくことになります。このように関数を使うことを関数呼び出しといいます。
そして、処理を依頼する際、どんな文字を画面に表示したいのかを伝えるために、関数の ( ) の中に、指示を与えることができます。このように ( ) の中に指定するものを、実引数 といいます。
「"C言語入門をはじめよう!\n"」や「"今回は、C言語の基本です。\n"」を指定することで、指定された文字が表示されます。
文字を指定する場合に、決まりがあります。
それは、複数文字を指定する場合は、文字列を " " (ダブルクォーテーション)で囲む必要があります。
文字列の中に、\n と記述されているのは、改行コードを表しており、画面には表示されず、改行が行われます。このような画面に表示されない \ が付いた特殊な記号のことをエスケープシーケンスといいます。
改行以外にもさまざまなものが用意されていますが、また、別の記事で紹介します。
C言語入門をはじめよう!
今回は、C言語の基本です。
もし、「C言語入門をはじめよう!\n」の \n を削除して、プログラムを実行すると、次のように1行で表示されるようになります。
C言語入門をはじめよう!今回は、C言語の基本です。
補足ですが、「今回は、C言語の基本です。」の後にも改行を付けています。
これは、付けなくても見た目は変わりありませんが、続けて表示する文字列を想定していない場合は、改行コード(\n)を付けておくことをおススメします。
もし、新たにprintf関数を追加する場合、前に出力した文字の横に表示されてしまうというミスが発生するためです。
printfの書式指定(%の意味を知ろう)
これまでのprintf関数は、文字列をそのまま表示していました。
でも、C言語では「数値」「文字」「少数」など、いろいろなデータを表示することができます。
そのときに使うのが、書式指定子と呼ばれる % で始まる特別な記号です。
つぎに書式指定子を使用したソースコードの例を示します。
#include <stdio.h>
int main(void)
{
printf("年齢は%d歳です。\n", 18); // 数値を表示
printf("身長は%fcmです。\n", 175.5); // 小数点を表示
printf("%cという1文字を表示する。\n", 'A'); // 文字を表示
printf("「%s」という文字列を表示する。\n", "C言語入門"); // 文字列を表示
// 複数の書式指定子
printf("%d番目、%d番目というように%sを使えます。\n", 1, 2, "複数の書式指定子");
return 0;
}
文字列中に %d や %s など %○を記述すると、その部分に , (カンマ)のあとの数値や文字を埋め込んで出力するという仕組みを持っています。
printf("年齢は%d歳です。\n", 18); では、%dの箇所に、カンマの後の 18 を埋め込むということをしています。
printf("%d番目、%d番目というように%sを使えます。\n", 1, 2, "複数の書式指定子"); では、文字列の中に書式指定子が複数含まれています。この場合、文字列の左から順に、カンマの後ろの左から順に、カンマで区切られた数字や文字列が埋め込まれます。

一度、プログラムを実行すると出力される文字列を確認しておきます。
次は、%dや%sなどの意味について表に記載します。
書式指定子 | 表示するもの | 例 |
%d | 整数値 | 10, -3 |
%f | 小数点数(浮動小数点数) | 3.14 |
%c | 1文字 | 'A' |
%s | 複数文字列 | "Hello" |
%c に指定する文字について、' ' (シングルクォーテーション)で囲んでいます。1文字を表す場合は、このように' ' で囲います。
ただし、printf( 'A' );
のようには書いてはいけません。printf( "%c", 'A' );
のように、%cで表示するときに書きます。
これには理由はあるのですが、これについては、改めて記事にしようと思います。
次にプログラムを実行した結果を示します。
年齢は18歳です。
身長は175.500000cmです。
Aという1文字を表示する。
「C言語入門」という文字列を表示する。
1番目、2番目というように複数の書式指定子を使えます。
浮動小数点以外は想定どおりの出力結果になっているのではないでしょうか。
浮動小数点は、175.5としているのに、175.500000と表示されています。
これは、C言語のルール(仕様)でこのように小数点6桁で表示されるようになっているからです。printf( "%.1f", 175.5 );
このように %.1f と指定することで、175.5と表示できるようになるのですが、今の段階では、そういう書き方があるくらいに覚えておけば十分です。
まとめ
- 画面に表示することを「出力する」という
- 処理のまとまりに名前を付けたものを関数と呼び、printfも関数の1つである
- printf関数は、( )の中に、文字列を" "で囲んで指定すると、その文字列が出力される
- 関数の( )の中に指定するものを実引数という
- 関数を使うことを「関数呼び出し」という
- \nは、改行コードを表し、 \ が付いた特殊な記号のことをエスケープシーケンスという
- %d、%f、%c、%sなどの%で始まる特別な記号を書式指定子といい、
カンマ(,)で指定した値や文字を埋め込むために使用する