
コンソールからプログラムを起動するとき、引数から文字列を受け取ってプログラムの動きを変えたりできると便利なケースがあります。
引数の数や、引数で入力された文字列を受け取る方法を確認していきましょう。
C 言語の main 関数から、プログラムを起動するときの引数の数や、引数の文字列を受け取るときに使うことができます。
例えば、コンソールプログラムで、下の例のように文字列をプログラムに渡して起動するものは良くあります。
> arg_input.exe abcd
これは「arg_input.exe」というプログラムに文字列「abcd」を引数で渡しています。
下のように main 関数を定義することで、この abcd をプログラムの赤でケトルことができます。
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("main関数の第一引数 argc は %d です。\n", argc);
for (int i = 0; i < argc; i++) {
printf("%d 番目の argv 文字列は「%s」でした。\n", i , argv[i] );
}
}
実行するときに引数をつけると結果が変わります。
まずは、引数なしで実行した場合は下の結果になります。
> arg_input.exe
main関数の第一引数 argc は 1 個です。
0 番目の argv 文字列は「arg_input.exe」でした。
つづいて、プログラム実行時に1つの引数をつけた時の結果は下のようになります。
> arg_input.exe test
main関数の第一引数 argc は 2 個です。
0 番目の argv 文字列は「arg_input.exe」でした。
1 番目の argv 文字列は「test」でした。
続いて2つの引数を付けてプログラムを実行してみます。
> arg_input.exe test あいうえお
main関数の第一引数 argc は 3 個です。
0 番目の argv 文字列は「arg_input.exe」でした。
1 番目の argv 文字列は「test」でした。
2 番目の引数の文字列は「あいうえお」でした。
main関数を下のように定義すると、 起動時のプログラム名を含む、引数の数と文字列をプログラムの中で 受け取ることができます。
int main(int argc, char* argv[]);
なお、char* argv[]
はポインタへのポインタとして、char** argv
として書くこともできます。
こっちのほうがちょっと分かりづらいかもです。
ちょっとしたツールなどで、引数で渡したファイルを編集するなどの使い方が簡単にできて便利です!
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: