コマンドライン引数を使ってみる
プログラミングを始めた最初の頃、ネットでサンプルプログラムを探すとたまに出てきた「argc / argv」の表記。
これはコマンドライン引数と言って、コマンドラインで実行する際にプログラム名の裏に引数を書くとそれをプログラム内で使えるというやつです。
例えばhoge.exeという実行ファイルに以下のような引数を使って実行したとします。
1 |
$ hoge 引数1 引数2 |
そしてプログラムが以下のようになっていたとします。
1 2 3 4 5 |
#include<stdio.h> int main(int argc, char *argv[]){ return 0; } |
今回のプログラム自体は見ての通り処理はありませんが、この時
- argcの値に引数の数
- *argv[]の値に引数の文字列を示すポインタ
が入ります。
上記のようにコマンドラインに入力した場合は、
argv[0] = hoge
argv[1] = 引数1
argv[2] = 引数2
という風にargv[0]にはプログラム名が入るため、argv[1]以降が実際の引数の値になります。
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h> int main(int argc, char *argv[]) { //int argc : 引数の総個数 //char *argv[] : 引数の文字列を指すポインタ配列 //argv[0]は実効ファイル名が入るため、argv[1]から出力 for (int i = 1; i < argc; i++) { printf("%s ", argv[i]); } return 0; } |
見ての通り単純なサンプルプログラムで、引数を全て半角スペースを空けて出力するというプログラムです。基本的に引数の値に制限はないため、いくつでも可能ですが、コマンドプロンプトで使用できる文字数が最長8191文字なので、それより長い文字列は不可能です。よっぽどないとは思いますが。
今回のブログ曲
今回投稿中に聴いていた曲はこちら