コマンドライン引数
今までは統合開発環境のVisual studio上でプログラムを実行していました。
関数でも説明した通りC言語のプログラムとはmain関数の定義であり、それを外部のプログラムが呼び出すことで実行されます。また、実行に際し引数を与えることが出来ます。
今回は作ったプログラムをコマンドプロンプト上で実行してみましょう。
コマンドプロンプト上で与える引数をコマンドライン引数といいます。
コマンドライン実行
まずは以下のプログラムを書いてみましょう。
comandline_sample1.c
#include <stdio.h> int main(int argc, char *argv[]) { if(argc < 1) { for (int i = 0; i < argc; i++) printf("argv[%d] = %s\n", i, argv[i]); } else printf("コマンドライン引数はありません。"); return 0; }
argvはプログラム名を含む与えたコマンドライン引数の配列です。スペースで区切って並べたデータが挿入されます。
argcは配列argvの要素数です。配列で詳しく説明してまいますが、c言語では配列から要素数を求める機能がないのでこのような形をよく使います。
コンパイルが通ったらコマンドプロンプト上で実行してみましょう。
スタート→アクセサリー→コマンドプロンプト
もしくは、ファイル名を指定して実行(win + r)→cmd
でコマンドプロンプトを起動しましょう。
このようなウィンドウが立ち上がります。
まずはコマンドライン引数なしで実行してみましょう。
エクスプローラーからVisual Studioの今回生成した実行ファイルが保存されているフォルダを開きます。
デフォルト設定なら
document/Visual Studio 2017/Projects/【今回作ったプロジェクト名】/Debug/
となるはずです。
Debug内にある「【今回作ったプロジェクト名】.exe」をコマンドプロンプトにドラッグ&ドロップします。
そうすると上記のパスを含むファイル名がコピーされます。
Enterを押して実行してください。
という実行結果がでてきます。
次にコマンドライン引数をつけて実行しましょう。
途中までは引数なしの場合と同じです。
ドラッグ&ドロップしたら、ファイル名の後にスペースを空けていくつか単語を並べて実行してください。
実行結果からコマンドライン引数の挙動が理解できると思います。
ここで、argv[0]にはファイル名が入るので注意してください。