C言語のprintf関数について詳しく知りたいな。どこのサイトを見てもよく分からないな…
分かりやすく解説して欲しいです…
今回は、printfについて解説します。
本記事の内容
・C言語 printf関数とは?
・printfを使用した簡単なプログラム
・文字列の途中で改行する方法
・変換指定子で桁数をコントロールする方法
・変換指定子を使って変数を出力する方法
この記事を書いている自分は情報系大学生で、三ヶ月ほどでC言語の基礎を完璧に理解しました。勉強中に分からないことが多く、一日中プログラミングしていたこともあります。
今では、ブログでC言語について解説しています。
今回はそんな経験をもとに解説していこうかと。
printf関数の解説前に、C言語の学習を始めるには「Visual Studio」をダウンロードする必要があります。
前回の投稿で、Visual Studioの基本的な使い方について掲載したので、まだ見ていない方は先にそちらをご覧ください。
それでは、解説していきます!
C言語 printf関数とは?
printf関数とは、「文字」や「数字」、「文字列」などあらゆるものを出力するためにある関数です。
printf関数はprintfと省略して呼ばれることが多いですね。printfだけでなくて、その他の関数もこのように省略して呼ばれています。
printfを使用した簡単なプログラム
#include<stdio.h>
int main()
{
printf("Hello World!");
}
これがprintfを使用したプログラムの中で最も簡単なプログラムですね。
#include<stdio.h>
の部分は
stdio.hというヘッダーファイルをインクルードする
という意味ですね。
printf関数を使用する際に必要になります。
と言っても、ちょっと良く分からないと思います。今の段階では気にしないでOK
次に、
int main( )
{
}
の部分はメイン関数と呼ばれるものです。
メイン関数も語尾に「関数」という文字列が付きますが、printf関数とは全く異なります。
プログラムを書く際に絶対必要なもので、printf関数などの関数はこのメイン関数の中に書きます。また、一つのプログラムに一回までしか使用できません。
最後に、そのメイン関数の中にある
printf(“Hello World!”);
ですが、これがprintf関数です。
今の段階では、「”」(ダブルクオーテーション)の間に文字を入力することで、その文字が出力されるんだなという解釈でOK
そのうち、「”」(ダブルクオーテーション)の外に変な文字列を書くことが出てきますよ~
大体こんな感じですね。このプログラムを実行すると、「Hello World!」の文字列が出力されます。
文字列の途中で改行する方法
次に、改行コードを使ってプログラムを書きましょう。改行コードとは改行するためのコードです。「¥n」もしくは「\n」で表します。このサイトでは、「¥n」使って表しています。
改行コードを使って、先ほどのプログラムをアレンジしてみます。
試しに「Hello」と「World!」の間に改行コードを入れてみましょう。
#include<stdio.h>
int main()
{
printf("Hello¥nWorld!");
}
具体的な使い方はこんな感じです。¥nはダブルクオーテーションの中ならどこにでも書けますし、何回でも改行することができます。
そして、出力結果がこちらです。
「Hello」と「World!」の間に改行コードを入力すると、出力結果の画面では「Hello」の直後で改行され、2行目に「 World!」が表示されます。
自分で好きな文章を考えて「¥n」を途中に挟むなどを繰り返して完璧になるまで覚えましょう!
変換指定子で桁数をコントロールする方法
変換指定子を使えば、出力数字の桁数をコントロールできます。
出力方法をコントロールするために覚えておくべきことは以下の4つです。
✔出力方法をコントロールするために覚えておくべきこと
- フラグ
- フィールド幅
- 精度
- 変換指定子
% [フラグ] [フィールド幅].[精度][長さ修飾子][変換指定子]
のようにして使います。
変換指定子は絶対必要だけど、それ以外は無くてもOKですね。
左側から順に解説していきます。
フラグとは?
フラグ | 説明 |
---|---|
- | 出力内容より最小フィールド幅が大きい場合に、左に寄せて出力(出力内容より最小フィールド幅が小さい場合は効果ない) |
+ | 正の数に「+」を付加(変換指定子が数値でなければ無視) |
スペースキー | 正の数に「+」を付加(変換指定子が数値でなければ無視) |
# | <8進数> 0が先頭に付加される <16進数> 0xまたは0Xが先頭に付加される <浮動小数点数> 小数点が出力される <g,G> 末尾の不要な0が削除されない |
, | 3桁ごとにカンマで区切る |
精度とフィールド幅とは?
精度では、小数点よりしたの桁数を指定できます。
フィールド幅では、何文字で出力するかを指定できます。
記号 | 意味 |
---|---|
数字 (0~9) | 出力桁数を指定 負の場合は無視 ピリオドを記述して数値を省略➔0と同じ <整数> 出力内容が指定桁数に満たない➔左側に文字0で埋める 出力内容が指定桁数を超える➔変化ない (精度=0)かつ(変数の値=0)➔何も出力されない <f, e,E> 小数点以下の桁数を指定 0を指定すると、フラグに#を指定しない限り、小数点も出力されない <g,G> 整数部と小数部を合わせた桁数を指定 <文字列> 出力の最大桁数を指定 |
* | 出力全体の桁数を指定、余りをスペースで埋める |
フィールド幅については下の記事でも解説しています。
ここでは、精度の説明を詳しくしていきますね。
たとえば%fという変換指定子を使えば、下8桁目を四捨五入して出力されるのですが、
%.(小数点より下の桁数)f
のようにアレンジすることで、「小数点より下の桁数で何桁目まで出力するか」を指定することができます。
下のプログラムを見てください。
#include <stdio.h>
int main()
{
printf("%.10f\n", 3.1415926535);
printf("%f\n", 3.1415926535);
printf("%.2f", 3.1415926535);
}
このようにして、出力する桁数をコントロールできます。
長さ修飾子とは?
記号 | 意味 |
---|---|
h | 整数を指定するとき、引数がshort型であることを示す |
l | 整数を指定するとき、引数がlong型であることを示す |
L | 小数を指定するとき、引数がlong double型であることを示す |
F | 文字列やポインタを指定するとき、引数がfarポインタであることを示す |
N | 文字列やポインタを指定するとき、引数がnearポインタであることを示す |
型とは?
記号 | 意味 |
---|---|
d | int 値を符号付き10進数として出力 |
i | int 値を符号付き10進数として出力 |
u | int 値を符号なし10進数として出力 |
X | int 値を符号なし16進数として出力(10~15の桁は大文字で表す) |
x | int 値を符号なし16進数として出力(10~15の桁は小文字で表す) |
o | int 値を符号なし8進数として出力 |
q | int 値を符号なし4進数として出力 |
b | int 値を符号なし2進数として出力 |
p | ポインタの値を16進数で出力 |
s | ヌル終端文字列へのポインタを受け取り、文字列を出力 |
c | int 値を文字として出力(Shift-JISの全角文字も出力可) |
S | ワイド文字列を出力 |
C | int 値を文字として出力(Shift-JISの全角文字も出力可) |
f | double 値を通常の小数表現で出力 |
e | double 値を指数表現で出力 |
E | double 値を指数表現で出力 |
g | 数値の大きさに応じて、fまたはeのいずれかの書式で出力(基本はfで出力。数値の絶対値が大きすぎて精度の桁数に収まらない場合と、数値の絶対値が 0.0001 より小さい場合は、e形式が使用される) |
G | 数値の大きさに応じて、fまたはのいずれかの書式で出力(基本はfで出力。数値の絶対値が大きすぎて精度の桁数に収まらない場合と、数値の絶対値が0.0001より小さい場合は、e形式が使用される) |
n | 指定した変数に、これまでに出力したバイト数を格納する |
変換指定子を使って変数を出力する方法
また、変換指定子を利用すれば、変数内の値を出力することもできます。
変数の説明は下の記事でしているので、ご覧ください。
≫C言語 入門 計算方法と変数の初期化!変数宣言する場所は?
たとえば変換指定子に%dを使うなら、こうなります。
printf(“%d”,変数);
変数の部分に、任意の変数が入ります。
試しに、「suuji」という変数に代入された数字を出力してみましょう。
#include <stdio.h>
int main()
{
int suuji;
suuji = 10;
printf("%d", suuji);
}
実行すると、「10」と表示されます。
まとめ:printfの使い方をまるっと解説します!
どこのプログラミングスクールでC言語の勉強を始めても、「printf関数」や「改行コード」からスタートすることになるので、必ず押さえるべきポイントです。
今回は、以上です!
このサイトでは、C言語を誰にでも分かるように解説しています。
次は、C言語での計算方法を学習してみましょう。
ではでは~👋
コメント