C言語のmain()関数に引数を指定することは可能?argcとargvの使い方を解説
はい、C言語ではmain()関数に引数を指定することが可能です。
C言語におけるコマンドライン引数とは、システムのコマンドライン上でプログラム名の後ろに指定する引数のことです。これらの引数の値は、プログラムの実行時にプログラムへと渡されます。
main関数に渡すことができる引数は、argcとargvの2つです。
ただし、main()関数は実際にはターミナルからプログラムを実行した際に、オペレーティングシステム(またはシェルプログラム)によって呼び出されるという点に注意が必要です。つまり、開発者が直接main()関数を呼び出すのではなく、OSがコマンドライン引数を受け取ってmain()関数に引き渡す仕組みになっています。
構文
main()関数で引数を受け取るための構文は以下の通りです。
int main(int argc, char *argv[]){
// コード
return 0;
}各引数の意味
- argc(argument count):コマンドラインから渡された引数の総数を表します。プログラム名自体も1つとしてカウントされるため、最低でも1以上の値になります。
- argv(argument vector):渡された各引数を文字列として格納する配列へのポインタです。argv[0]にはプログラム名が格納され、argv[1]以降に実際の引数が順番に格納されます。
サンプルコード
以下は、プログラムに渡されたすべての引数を出力するサンプルプログラムです。
#include<stdio.h>
int main(int argc, char *argv[]){
int i;
for (i = 0; i < argc; i++) {
printf("Arg %d: %s\n", i, argv[i]);
}
return 0;
}実行結果
Arg 0: G:\CP\CP programs\main with arguments.exe
解説
このプログラムは、プログラム名そのものを含む、プログラムに渡されたすべての引数を出力します。ループ処理によって、argcで取得した引数の個数分だけargv配列の内容を順番に表示しています。
例えば、コマンドラインで「program.exe apple banana」のように実行した場合、「Arg 0」にはプログラム名、「Arg 1」には「apple」、「Arg 2」には「banana」が出力されます。このように、argcとargvを活用することで、実行時に外部から柔軟に値をプログラムへ渡すことができます。
-
C++プログラムで長方形に内接できる最大のひし形の面積を求める方法
はじめに本記事では、与えられた長方形の中に内接できる最大のひし形の面積を求める問題を解説します。下図のように、最大のひし形は長方形の各辺の中点を頂点として内接します。ひし形の面積の求め方長方形の長さを「l」、幅(breadth)を「b」とします。長方形に内接する最大のひし形では、その2本の対角線がそれぞれ長方形の長さ l と幅 b と一致します。ひし形の面積は対角線 d1、d2 を使って次の式で表せます。面積 = (d1 × d2) / 2 = (l × b) / 2これは、内接するひし形が4つの直角三角形に分割され、その合計が元の長方形の面積のちょうど半分になるためです。したがって、複雑な幾
-
C#プログラムの主要な構成要素とは?基本構造をわかりやすく解説
C#プログラムは、いくつかの基本的な要素が組み合わさって構成されています。主な構成要素は以下のとおりです。名前空間(Namespace)の宣言クラスクラスのメソッドクラスの属性Mainメソッドステートメント(文)と式コメントそれでは、実際にC#プログラムを作成する例を見てみましょう。サンプルコードusing System; namespace Demo { class Program { static void Main(string[] args) { Console.WriteLine(Our first program in C#!);