C言語 入門 printfの使い方をまるっと解説します!

C言語 printfの使い方C言語
C言語のprintf関数を調べている人

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」と「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>
整数部と小数部を合わせた桁数を指定
<文字列>
出力の最大桁数を指定
*出力全体の桁数を指定、余りをスペースで埋める

フィールド幅については下の記事でも解説しています。

≫C言語 入門 %fとfloatを使った小数の計算

ここでは、精度の説明を詳しくしていきますね。

たとえば%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ポインタであることを示す

型とは?

記号意味
dint 値を符号付き10進数として出力
iint 値を符号付き10進数として出力
uint 値を符号なし10進数として出力
Xint 値を符号なし16進数として出力(10~15の桁は大文字で表す)
xint 値を符号なし16進数として出力(10~15の桁は小文字で表す)
oint 値を符号なし8進数として出力
qint 値を符号なし4進数として出力
bint 値を符号なし2進数として出力
pポインタの値を16進数で出力
sヌル終端文字列へのポインタを受け取り、文字列を出力
cint 値を文字として出力(Shift-JISの全角文字も出力可)
Sワイド文字列を出力
Cint 値を文字として出力(Shift-JISの全角文字も出力可)
fdouble 値を通常の小数表現で出力
edouble 値を指数表現で出力
Edouble 値を指数表現で出力
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の使い方をまるっと解説します!

Visual Studio C言語 printfの解説

どこのプログラミングスクールでC言語の勉強を始めても、「printf関数」や「改行コード」からスタートすることになるので、必ず押さえるべきポイントです。

今回は、以上です!

このサイトでは、C言語を誰にでも分かるように解説しています。

次は、C言語での計算方法を学習してみましょう。

ではでは~👋