【C言語】コマンドライン引数はどの関数の引数なのか解説

コマンドライン引数を利用することで、プログラムに外部からデータや設定を与えることができます。

この記事では、C言語におけるコマンドライン引数の使い方と役割について解説します。

目次から探す

コマンドライン引数とは

コマンドライン引数とは、プログラムを実行する際にコマンドラインから渡される値のことです。

コマンドライン引数は、プログラムに外部からデータを与えるための手段として利用されます。

例えば、ファイル名やオプション、パラメータなどの情報をプログラムに渡すことができます。

なぜコマンドライン引数が必要なのか

コマンドライン引数は、プログラムの柔軟性と汎用性を高めるために必要です。

プログラムを実行する際に、毎回ソースコードを変更することなく、異なるデータや設定を与えることができます。

また、コマンドライン引数を利用することで、プログラムの再利用性も向上します。

main関数とコマンドライン引数

main関数の引数としてのコマンドライン引数

C言語のプログラムでは、«main関数»がプログラムのエントリーポイントとなります。

«main関数»は、通常、以下のような形式で定義されます。

int main(int argc, char *argv[])

この中で、«argc»はコマンドライン引数の数を表し、«argv»はコマンドライン引数の値を格納する文字列配列です。

«argc»は常に1以上の値を持ち、最低でもプログラム名が含まれます。

main関数の戻り値としての終了コード

«main関数»は、プログラムの実行結果を示す終了コードを返すことができます。

一般的に、0は正常終了を示し、0以外の値は異常終了を示します。

終了コードは、プログラムが他のプログラムやシェルスクリプトと連携する際に利用されます。

コマンドライン引数の利用例

ファイル名の指定

コマンドライン引数を利用して、プログラムにファイル名を渡すことができます。

例えば、テキストファイルを読み込んでその内容を表示するプログラムを考えてみましょう。

#include <stdio.h>
int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("ファイル名を指定してください。Please specify a file name.파일 이름을 지정하십시오.Angiv venligst et filnavn.Vänligen ange ett filnamn.Geef een bestandsnaam op.Especifique um nome de arquivo.Bitte geben Sie einen Dateinamen an.Veuillez spécifier un nom de fichier.Por favor especifique un nombre de archivo.Si prega di specificare un nome file.\n");
        return 1;
    }
    FILE *file = fopen(argv[1], "r");
    if (file == NULL) {
        printf("ファイルを開けませんでした。Could not open file.파일을 열 수 없습니다.Kunne ikke åbne filen.Kunde inte öppna filen.Kon het bestand niet openen.Não pode abrir arquivo.Konnte die Datei nicht öffnen.Impossible d'ouvrir le fichier.No se pudo abrir el archivo.Impossibile aprire il file.\n");
        return 1;
    }
    char buffer[256];
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }
    fclose(file);
    return 0;
}

このプログラムでは、コマンドライン引数としてファイル名を受け取り、そのファイルを開いて内容を表示しています。

もし、ファイル名が指定されていない場合やファイルを開けなかった場合は、エラーメッセージを表示して異常終了します。

オプションの指定

コマンドライン引数を利用して、プログラムにオプションを渡すこともできます。

オプションは、プログラムの振る舞いを変えるためのフラグや設定値です。

例えば、ファイルの内容を逆順で表示するプログラムを考えてみましょう。

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
    int reverse = 0;
    for (int i = 1; i < argc; i++) {
        if (strcmp(argv[i], "-r") == 0) {
            reverse = 1;
        }
    }
    char buffer[256];
    while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
        if (reverse) {
            for (int i = strlen(buffer) - 1; i >= 0; i--) {
                printf("%c", buffer[i]);
            }
        } else {
            printf("%s", buffer);
        }
    }
    return 0;
}

このプログラムでは、コマンドライン引数として«-r»オプションを指定することで、ファイルの内容を逆順で表示します。

オプションが指定されていない場合は、通常通り順番に表示します。

パラメータの指定

コマンドライン引数を利用して、プログラムにパラメータを渡すこともできます。

パラメータは、プログラムに対して特定の値を与えるためのものです。

例えば、数値の合計を計算するプログラムを考えてみましょう。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
    int sum = 0;
    for (int i = 1; i < argc; i++) {
        sum += atoi(argv[i]);
    }
    printf("合計total합계Totaltotaltotaaltotalgesamttotaltotaltotale: %d\n", sum);
    return 0;
}

このプログラムでは、コマンドライン引数として数値を指定することで、それらの合計を計算して表示します。

複数の数値を指定することもできます。

1 2
この記事のページ一覧
  1. 現在のページ
目次から探す