🖥️

【C言語超入門】 第03回 関数呼び出しとprintf

2024/12/25に公開

https://youtu.be/E5UMrwG8tGQ

四国めたん
\textcolor{pink}{四国めたん: }教師役ですわ

ずんだもん
\textcolor{lime}{ずんだもん: }生徒役なのだ

\footnotesize \textcolor{pink}{四国めたん:} 皆さん、こんにちは。四国めたんです

\footnotesize \textcolor{lime}{ずんだもん:} ずんだもんなのだ。こんにちはなのだ

\footnotesize \textcolor{pink}{四国めたん:} 今回もC言語のお勉強をしていきましょう

\footnotesize \textcolor{lime}{ずんだもん:} レッツゴーなのだ

\footnotesize \textcolor{pink}{四国めたん:} 第3回となる今回は 関数呼び出しとprintf についてお話していきますわ

\footnotesize \textcolor{lime}{ずんだもん:} 関数呼び出しとprintf

\footnotesize \textcolor{pink}{四国めたん:} ええ、C言語では 関数 を多く使いますわ

\footnotesize \textcolor{pink}{四国めたん:} たとえば第1回で"Hello World!!"を表示するために使ったprintf関数 のひとつですわね

\footnotesize \textcolor{lime}{ずんだもん:} ああ、あのprintf関数 なのか

関数って何ですか?

\footnotesize \textcolor{lime}{ずんだもん:} 実際に 関数 って何なのだ?

\footnotesize \textcolor{pink}{四国めたん:} 一般的に数学で云うところの 関数f(x)=... のように fx の数式をあてはめた形式ですわ

\footnotesize \textcolor{pink}{四国めたん:} C言語でもおなじで 関数 を使用することで何らかの動作を起こしたり値を取得できるのですわ

\footnotesize \textcolor{lime}{ずんだもん:} う~ん、いまいちピンとこないのだ

\footnotesize \textcolor{pink}{四国めたん:} とりあえずプログラムを見てみましょう

\footnotesize \textcolor{pink}{四国めたん:} まずは第1回のプログラムを確認していきますわ

#include <stdio.h>

void main() {
  printf("Hello World!!");
}

\footnotesize \textcolor{pink}{四国めたん:} このprintf関数の呼び出し ですわ

\footnotesize \textcolor{pink}{四国めたん:} 関数コールfunction call などと呼ばれる事もありますわね

\footnotesize \textcolor{lime}{ずんだもん:} ふ~ん、そうなのだ

\footnotesize \textcolor{lime}{ずんだもん:} このprintfという 関数 に"Hello World!!"と云う文章を渡しているのだ

\footnotesize \textcolor{pink}{四国めたん:} これでコンソールに文章を表示することができますわ

関数はどこに?

\footnotesize \textcolor{lime}{ずんだもん:} ところで 関数 はどこにあるのだ?

\footnotesize \textcolor{pink}{四国めたん:} printfを含めた 標準関数 もしくは 標準ライブラリ関数 と呼ばれる関数群はC言語の開発環境と一緒にインストールされていますわね

\footnotesize \textcolor{pink}{四国めたん:} それらは 標準Cライブラリ と呼ばれていますわ

\footnotesize \textcolor{lime}{ずんだもん:} なるほどなのだ

\footnotesize \textcolor{pink}{四国めたん:} 標準Cライブラリ は優秀なプログラマーの先輩たちが作ってくれていますわ

\footnotesize \textcolor{pink}{四国めたん:} でも 関数 は自分でも作ることができますわね

\footnotesize \textcolor{lime}{ずんだもん:} そうなのか?

\footnotesize \textcolor{pink}{四国めたん:} はい、でも関数の作成の解説は後の回で行いますわね

\footnotesize \textcolor{lime}{ずんだもん:} ずいぶんと、もったいぶるのだ

ライブラリ

ライブラリは関数の集まりです

C言語では既にコンパイルが終わってバイナリの状態のファイルとなっています

標準Cライブラリ以外にもグラフィカルユーザーインターフェース用や3D描画用、データベースアクセス用など、様々なライブラリが存在します

無料のものだけではなく有料のライブラリもあります

なかにはソースコードが公開されているライブラリも数多く存在します

機会があれば公開されているソースコードを読んでみるのも勉強になります

ちなみにVisual Studioで使用する標準Cライブラリを含むファイルはWindowsにデフォルトで含まれています

関数呼び出し

\footnotesize \textcolor{pink}{四国めたん:} それでは関数の呼び出しについてお話ししていきますわね

\footnotesize \textcolor{lime}{ずんだもん:} おねがいなのだ

\footnotesize \textcolor{lime}{ずんだもん:} さっそく関数の呼び出し方を教えるのだ

\footnotesize \textcolor{pink}{四国めたん:} C言語での関数の呼び出しは関数名(引数1, 引数2, ...)のようになりますわ

\footnotesize \textcolor{lime}{ずんだもん:} printfでもそうなっていたのだ

\footnotesize \textcolor{lime}{ずんだもん:} ところで 標準関数 にはどのような関数があるのだ?

\footnotesize \textcolor{pink}{四国めたん:} printfの他にsincosのような三角関数等、数多くありますわ

\footnotesize \textcolor{pink}{四国めたん:} ただ余りにも多いので、ここでは説明しきれませんわね

\footnotesize \textcolor{lime}{ずんだもん:} どのくらいあるのだ?

\footnotesize \textcolor{pink}{四国めたん:} 最低限で約500個、Visual Studioでは1000個ほど存在するみたいですわ

\footnotesize \textcolor{lime}{ずんだもん:} ひえ~!

\footnotesize \textcolor{pink}{四国めたん:} ですので詳細はネットで調べて下さいね

\footnotesize \textcolor{pink}{四国めたん:} "C言語 標準関数"等で検索すれば出てきますわ

\footnotesize \textcolor{lime}{ずんだもん:} わかったのだ

標準Cライブラリ

標準Cライブラリ の含まれる関数の一部については以下のページ等でリストアップされています

一般的によく使用するのは 文字列操作入出力一般ユーティリティ数学日付及び時間 系統の関数です

"こんな機能が欲しい"と思ったら、一度 標準Cライブラリ を探してみることをお勧めします

関数呼び出しにはヘッダーファイルが必要です

\footnotesize \textcolor{pink}{四国めたん:} それではもう少し詳しい使い方を説明しますわね

\footnotesize \textcolor{lime}{ずんだもん:} おねがいするのだ

\footnotesize \textcolor{pink}{四国めたん:} まず 標準関数 の呼び出しを行うには ヘッダーファイル を読み込む必要がありますわ

\footnotesize \textcolor{lime}{ずんだもん:} ヘッダーファイル

\footnotesize \textcolor{pink}{四国めたん:} 最初の行に書かれている"stdio.h"という名前のファイルが例ですわ

\footnotesize \textcolor{lime}{ずんだもん:} "stdio.h"というファイルには何が書かれているのだ?

\footnotesize \textcolor{pink}{四国めたん:} さっそく確認してみましょう

\footnotesize \textcolor{pink}{四国めたん:} "stdio.h"と書いた部分を右クリックしてフローティングメニューから"ドキュメントに移動<stdio.h>"を選択しますわね

ドキュメントに移動

\footnotesize \textcolor{lime}{ずんだもん:} "stdio.h"のファイルが開いたのだ

\footnotesize \textcolor{pink}{四国めたん:} では"stdio.h"ファイルからprintfを検索して確認してみますわね

\footnotesize \textcolor{lime}{ずんだもん:} 検索?どのように行うのだ?

\footnotesize \textcolor{pink}{四国めたん:} \fcolorbox{blue}{lightgray}{Ctrl}-\fcolorbox{blue}{lightgray}{f}を押して検索ウインドウを開いて検索文字列に" printf"を指定しますわ

\footnotesize \textcolor{lime}{ずんだもん:} うん?"printf"の前にスペースが付いているような...

\footnotesize \textcolor{pink}{四国めたん:} ええ、空白を忘れると検索のヒットが多すぎて困ったことになりますわね

stdio.hでprintf検索

_Check_return_opt_
_CRT_STDIO_INLINE int __CRTDECL printf(
    _In_z_ _Printf_format_string_ char const* const _Format,
    ...)
#if defined _NO_CRT_STDIO_INLINE
;
#else
{
    int _Result;
    va_list _ArgList;
    __crt_va_start(_ArgList, _Format);
    _Result = _vfprintf_l(stdout, _Format, NULL, _ArgList);
    __crt_va_end(_ArgList);
    return _Result;
}
#endif

\footnotesize \textcolor{lime}{ずんだもん:} なんか検索結果を見ても良く分からないのだ

\footnotesize \textcolor{pink}{四国めたん:} まあ、そうですわね

\footnotesize \textcolor{pink}{四国めたん:} とりあえず今は"stdio.h"の中にprintfについて書かれていることだけを確認しておきましょう

\footnotesize \textcolor{lime}{ずんだもん:} りょうかいなのだ

\footnotesize \textcolor{pink}{四国めたん:} ちなみにprintf以外の 標準関数 の多くは、それぞれ宣言されているヘッダーファイルが異なっていますわ

\footnotesize \textcolor{lime}{ずんだもん:} それらのヘッダーファイルを教えてほしいのだ

\footnotesize \textcolor{pink}{四国めたん:} いっぱいありすぎますので必要になった時にネットで検索してくださいね

\footnotesize \textcolor{lime}{ずんだもん:} 自分で調べるのも勉強なのだ

printfの使い方

\footnotesize \textcolor{pink}{四国めたん:} さてprintfの使い方について、もう少し詳しく見ていきますわね

\footnotesize \textcolor{lime}{ずんだもん:} おねがいなのだ

printfで文字列を表示

\footnotesize \textcolor{pink}{四国めたん:} 一番簡単なのは、今までのようにprintfに続く括弧"()"内に単純にダブルクォーテーション(")で括った文章を記述することですわ

\footnotesize \textcolor{lime}{ずんだもん:} 文章には英数字しか使えないのか?

\footnotesize \textcolor{pink}{四国めたん:} Visual Studioでは日本語を表示することも可能ですわ

\footnotesize \textcolor{lime}{ずんだもん:} 日本語も!

\footnotesize \textcolor{pink}{四国めたん:} さっそく"Hello World!!"を日本語に変えてみましょう

#include <stdio.h>

void main() {
  printf("世界よこんにちは!!");
}

\footnotesize \textcolor{pink}{四国めたん:} プログラムを実行してみるとコンソールに「世界よこんにちは!!」と表示されるはずですわ

\footnotesize \textcolor{lime}{ずんだもん:} おおっ!日本語が表示されたのだ

世界よこんにちは!!

printfで変数の値を表示

\footnotesize \textcolor{pink}{四国めたん:} さらに変数の値を表示することもできますわ

\footnotesize \textcolor{pink}{四国めたん:} さっそくやってみましょう

#include <stdio.h>

void main() {
  int x = 1;
  printf("xの値は%dです。", x);
}

\footnotesize \textcolor{pink}{四国めたん:} プログラムを実行するとコンソールに「xの値は1です。」と表示されますわ

整数の表示

\footnotesize \textcolor{lime}{ずんだもん:} 本当なのだ。凄いのだ!

\footnotesize \textcolor{lime}{ずんだもん:} でもprintfの書きかたには、あまり違いがないように思えるのだ

\footnotesize \textcolor{pink}{四国めたん:} 確かにprintfの括弧"()"内の最初に文字列を入れるのは今までと同じですわ

\footnotesize \textcolor{pink}{四国めたん:} この括弧"()"内の最初の部分を 第1引数 といいますわ

\footnotesize \textcolor{lime}{ずんだもん:} なるほど

\footnotesize \textcolor{pink}{四国めたん:} 第1引数に続けてカンマ(,)の後に値を表示したい変数の名前を入れますわ

\footnotesize \textcolor{pink}{四国めたん:} この部分を 第2引数 と言い、ここでは"x"を入れておきますわね

\footnotesize \textcolor{lime}{ずんだもん:} ところで文字列の中に"%d"という見慣れない記号があるのだが、なんなのだ?

\footnotesize \textcolor{pink}{四国めたん:} "%d"は 書式指定子 と呼ばれる記号で、文字列の中でint型の変数"x"の値を表示する場所を示しますわ

\footnotesize \textcolor{lime}{ずんだもん:} float型の変数は違うのか?

\footnotesize \textcolor{pink}{四国めたん:} はい、float型の変数には"%f"を使いますわね

\footnotesize \textcolor{pink}{四国めたん:} 実際にプログラムを変更して実行してみましょう

#include <stdio.h>

void main() {
  float y = 1.0;
  printf("yの値は%fです。", y);
}

\footnotesize \textcolor{lime}{ずんだもん:} コンソールに「yの値は1.000000です。」と表示されたのだ!

浮動小数点の表示

書式指定子

printf等の関数で使用できる書式指定子は多岐にわたります

簡単なリストについてはフォーマット指定子一覧等で説明されています

もう少し詳しい説明はC言語 printfのフォーマット指定子等を見て下さい

なおVisual Studioで使える書式指定子の詳細についてはMicrosoft Learnで説明されています

まとめ

\footnotesize \textcolor{pink}{四国めたん:} お疲れさまでした

\footnotesize \textcolor{pink}{四国めたん:} 以上で 関数呼び出しとprintf を終了しますわ

\footnotesize \textcolor{lime}{ずんだもん:} おつかれなのだ

Discussion