Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2021年2月23日に更新

第2章43プログラム起動時の引数を読む

イチからゲーム作りで覚えるC言語
第2章42 ポインタへのポインタ : PREV
NEXT : 第2章44 malloc関数、free関数で大きなメモリを扱う :

概要

コンソールからプログラムを起動するとき、引数から文字列を受け取ってプログラムの動きを変えたりできると便利なケースがあります。

引数の数や、引数で入力された文字列を受け取る方法を確認していきましょう。

int main 関数の引数

C 言語の main 関数から、プログラムを起動するときの引数の数や、引数の文字列を受け取るときに使うことができます。

例えば、コンソールプログラムで、下の例のように文字列をプログラムに渡して起動するものは良くあります。

プログラム引数
> arg_input.exe abcd

これは「arg_input.exe」というプログラムに文字列「abcd」を引数で渡しています。

下のように main 関数を定義することで、この abcd をプログラムの赤でケトルことができます。

 
arg_input.c
#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実行
> arg_input.exe
main関数の第一引数 argc は 1 個です。
0 番目の argv 文字列は「arg_input.exe」でした。

つづいて、プログラム実行時に1つの引数をつけた時の結果は下のようになります。

arg_input.exe実行
> arg_input.exe test
main関数の第一引数 argc は 2 個です。
0 番目の argv 文字列は「arg_input.exe」でした。
1 番目の argv 文字列は「test」でした。

続いて2つの引数を付けてプログラムを実行してみます。

arg_input.exe実行
> arg_input.exe test あいうえお
main関数の第一引数 argc は 3 個です。
0 番目の argv 文字列は「arg_input.exe」でした。
1 番目の argv 文字列は「test」でした。
2 番目の引数の文字列は「あいうえお」でした。

main関数の引数

main関数を下のように定義すると、 起動時のプログラム名を含む、引数の数と文字列をプログラムの中で 受け取ることができます。

mail関数定義
int main(int argc, char* argv[]);
  1. 第1引数の argc にはプログラム名を含む引数の数が入る
  2. 第2引数の argv には文字列への配列として、複数の引数の文字列が渡される

なお、char* argv[] はポインタへのポインタとして、char** argv として書くこともできます。 こっちのほうがちょっと分かりづらいかもです。

あとがき

ちょっとしたツールなどで、引数で渡したファイルを編集するなどの使い方が簡単にできて便利です!

参考

(英語)N1570 - 5.1.2.2.1 Program startup

イチからゲーム作りで覚えるC言語
第2章42 ポインタへのポインタ : PREV
NEXT : 第2章44 malloc関数、free関数で大きなメモリを扱う :
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

第4章3 C言語コンソール上で迷路脱出プログラム・迷路の自動生成

#C11仕様#C言語#ゲームプログラミング✎ 2021-05-15
C言語のコンソールゲームで迷路脱出ゲームプログラムの作り方を確認します。迷路は自動生成されます
広告領域
追従 広告領域
目次
第2章43プログラム起動時の引数を読む
第2章43プログラム起動時の引数を読む
概要
概要
int main 関数の引数
int main 関数の引数
main関数の引数
main関数の引数
あとがき
あとがき
参考
参考
Nodachisoft © 2021