突然ですが、コンピュータのプログラムは何をしているか知っていますか? ゲームが動いたり、データの統計を取ったり、やってる事はいろいろですが、結局のところは出力を行うのがプログラムなのです。
--いきなりここに飛んで来ちゃった人は、よろしければ下記からご覧ください。
C言語基礎講座インデックス
殆どの場合、プログラムは何らかの入力をもらったら、それを処理して、どこかに出力する流れとなります。ゲームの場合は、ジョイパッド入力を受けて、自機の位置を変えるなり、カーソルを移動させるなり、画面を変化させてそれをモニタに出力しています。
ビジネス系アプリの場合は、膨大なデータを外部記憶から入力して、その統計処理等を行うなどしてから、再度外部記憶装置に出力したりします。閲覧要求という入力があれば、必要な情報を取り纏めてから、要求された場所に出力する事になります。
まとめると、だいたいは…
入力 → 処理 → 出力
この流れに集約されます。メガデモなんかは起動直後に始まりますが、これは入力が無くて、処理が固定になっていますね。ただ、それでも出力はあります。これがコンピュータのプログラムの役割であり、動作そのものなのです。
- 基本出力
C言語の出力と言えば、聞いた事がある人も多い printf という命令となります。printf「プリントエフ」 は、C言語に標準で付属しているライブラリに含まれている標準関数です。ライブラリは、皆さんがよく使うであろう処理を、誰でも共通して使えるように、世の中の天才さんが作ってくれたプログラムの集まりなのです。少しプログラムを教えてもらった人は、最初にこんなおまじないを書けと言われた事があるかもしれません。
#include <stdio.h>
stdio.h は「エスティディー・アイオー・ヘッダー」と読みます。あるいは「スタンダード・アイオー・ヘッダー」でも構いません。どちらでもC言語プログラマには通じます。#include「インクルード」はファイルの読み込みを意味しています。stdio.h は VS2022 がどこかに既に用意してくれているので、#include といるだけで、どこからか自動的に読み込んできます。
拡張子が .h はヘッダーファイルです。ヘッダーファイルには、他のプログラムで使うための定義が記述されています。C言語が用意してくれている代表的なヘッダーファイルは stdio.h と stdlib.h があります。他にもたくさんありますが、必要になったら、都度 #include で追加していく事になります。
ちなみに「アイオー」とは「Input Output」の略だったりします。stdio.h とは、日本語に直すと、標準で用意された入力と出力プログラムを使うための定義(ヘッダー)という意味だったんですね。stdlib.h は「標準で用意されたライブラリを使うための定義が格納されたヘッダーファイル」となります。
なお、前回と前々回では #include "stdio.h" と記述していました。今回は #include <stdio.h> と記述しています。"" の場合は自分で定義したヘッダーの読み込みを、<> の場合は VS2022 が事前に用意したライブラリの中から読み込まれると思ってください。
VS2022 はなかなか賢くて、必要な #include が出てくると、自動的に追加するかと尋ねてくるので、「はい」ってやると勝手に追加してくれます。いやはや便利ですね。おかげで、どのヘッダーにどの命令が定義されているか、調べなくてもよくなっています。ラクチンです。
自動修正の操作方法ですが、まずエラーが起きている場所にマウスを持って行くと、考えられる提案を表示すると表示されるので、それをクリックします。
今回の場合だと、修正提案に #include <stdio.h> を追加と表示されるので、それをクリック。これで自動的にソースコードが修正されます。
自動修正の操作方法ですが、まずエラーが起きている場所にマウスを持って行くと、考えられる提案を表示すると表示されるので、それをクリックします。
今回の場合だと、修正提案に #include <stdio.h> を追加と表示されるので、それをクリック。これで自動的にソースコードが修正されます。
printf はかなり高機能です。以前に printf("Hello, World!"); と記述しました。後ろの ; は区切りです。C言語は改行とかは全く関係なくて、この ; を区切りとして判定します。ダブルクォート "" で囲まれた文字を表示するのが主や機能なのですが、他に変数の内容を表示する機能もあります。例えば…
int num = 5;printf("数値は%dです。", num);
このように記述すると、画面には「数値は5です。」と表示されます。% から始まる文字は書式文字列として扱われて、続いて記述された変数の中身を表示する動作となります。書式文字列はかなりたくさんあるので、次回以降の変数の説明の、そのまたさらに後で、改めて詳しく説明します。
- 基本入力
C言語の入力は scanf_s「スキャンエフ」という命令です。個人的にはこの入力命令は本当に使いづらいです。ただ、C言語の基本入力としては、説明を避けられないので、仕方が無いので説明します。皆さんもある程度勉強が進むまでは仕方がないのでお付き合いください😁
とはいえ scanf_s は無駄に高機能です。複数の数値入力をまとめて行う事も出来たりします。一つだけの入力であれば…
int num;scanf_s("%d", &num);
こんな感じで記述します。いきなりでワケワカメですよね。これを正しく説明しようとすると、なんと C言語の理解を阻む忌まわしの言葉、ポインタの説明をしないといけないのです。分かってる人がプログラムを作るとこうなっちゃうという悪い例です。良い子は真似をしなiうわなにをするくぁwせdrftgyふじこlp
必要最小限の説明をします。int は整数の型です。num という変数を定義しています。scanf_s はその num にキーボードから入力された数値を格納するための記述です。"%d" の部分は書式文字列と呼ばれています。整数の場合は %d と決められています。num の先頭に & が付いています。これは num という変数の場所を示しています。なので、この scanf_s 命令は「num の場所にキーボードから入力された数値を格納する」という意味なのです。ぜーぜー
- まとめ
- プログラムは、入力、処理、出力という流れで動作する。
- C言語標準プログラムを使うには #include とする。
- C言語標準プログラムの代表には stdio.h と stdlib.h がある。
- 出力には printf を使う。
- 入力には scanf_s を使う。※
※ 2022.08.2 18:45 更新
scanf は古くから使用されている標準関数ですが、VS2022 では使用が非推奨になりまともにビルドが出来なくなってしまいました。代替え関数として scanf_s を使用しろとのお達しです。そのため、以後は scanf_s で記述するようにします。同様に printf も printf_s という代替え関数が既に用意されています。printf が非推奨でまともに使えなくなる日がもし来たら、printf は全て printf_s に置き換えてもらえると助かります。
>> C言語004 変数の型に進む
>> C言語基礎講座インデックスに戻る
scanf は古くから使用されている標準関数ですが、VS2022 では使用が非推奨になりまともにビルドが出来なくなってしまいました。代替え関数として scanf_s を使用しろとのお達しです。そのため、以後は scanf_s で記述するようにします。同様に printf も printf_s という代替え関数が既に用意されています。printf が非推奨でまともに使えなくなる日がもし来たら、printf は全て printf_s に置き換えてもらえると助かります。
>> C言語004 変数の型に進む
>> C言語基礎講座インデックスに戻る
ドウシシャ(DOSHISHA)
コメント
コメント一覧 (2)
https://docs.microsoft.com/en-us/cpp/c-runtime-library/security-features-in-the-crt?redirectedfrom=MSDN&view=msvc-170
個人的にはscanfで面倒くさくなくていいじゃんと思っているのですがエラーが出て困っている人もいるようなのでコメントです。
内藤時浩
がしました