1

私はCプログラミングを学んでいて、どこにも答えが見つからない問題に悩まされています。

私がやりたいのは、ターミナルから直接追加の引数を使用して実行できるCプログラムを作成することです。

cat -n input.txt - nosuchfile.txt input.txt

私が知りたいのは、上記のように(コンパイル後に)実行できるように関数を作成する方法です。したがって、プログラムが実行することはおそらくそれほど重要ではありませんが、完全を期すために、catは入力ファイルのリストを取得します。そしてそれらをstdoutに出力します。完全なエラー処理(したがってファイルnosuchfile.txt)があり、行番号(-n)を含めたり、標準入力(-)から入力を取得したりすることもできます。

明確にするために、私は以前にソースファイルをコンパイルしてプログラムを実行できるプログラムを作成しました。たとえば./cat、入力が必要な場合は、このコマンドの後にプログラムの実行を開始するためにこれを取得しました。したがって、ターミナルは次のようになります。

gcc ...
./cat
-n input.txt - nosuchfile.txt input.txt

このようなプログラムを実行する方法を知りたい

gcc...
cat -n input.txt - nosuchfile.txt input.txt 

どうもありがとうございます!

4

2 に答える 2

0

ほとんどのシステムでは、mainに2つまたは3つの明確に定義されたパラメーターがあります。

#include <stdio.h>
int main(int ac, char **av) { printf("%d %s\n", ac, av[0]); return 0; }

パラメータの数(+1)とプログラムの名前を出力します。 av[1]最初のパラメータ(ac> 1の場合)などを含む文字列へのポインタが含まれます。

3番目の可能なパラメーター, char **env)(一部のシステムでは)には、環境変数へのポインターが含まれます。

編集 gnugetoptライブラリは、一般的なunix/gnuユーティリティで使用されるのと同じようにコマンドラインを解析するのに役立ちます。

于 2013-03-14T05:52:03.910 に答える
0

コマンドライン引数を使用できます。

#include <stdio.h>

int main( int argc, char *argv[] ) // argc is the (c)ount of arguments, argv is the (v)alues
{
  printf( "\nCommand-line arguments:\n" );

  for( int count = 0 ; count < argc ; count++ )
  {
    printf( "  argument %d = %s\n", count, argv[count] );
  }

  return 0;
}
于 2013-03-14T05:53:34.357 に答える