2

だから私はCプログラミング言語を読んでいて、プログラムが引数を持つことができるようになったセクションに出くわしました...たとえば

find -x -n pattern

ここで、-x除くという意味です。 -n番号付きの行を意味します...そしてpattern、別の数行の入力で、それが探すものです。

現在、彼らは 、 、、および と見なしてfindいます。コンピュータはどのようにして 1 つの arg を他の arg から認識するのでしょうか?*argv[0]-x-n*++argv[0]pattern*++argv[0]

3 つのものがすべて に等しい場合*++argv[0]、それらは にとどまりますargv[1]が、それらはすべて ?? 誰か詳しく説明してくれませんか?

4

2 に答える 2

3
argv[0] = program name = "find"
argv[1] = first argument = "-x"
argv[2] = second argument = "-n"
argv[3] = third argument = "pattern"

argc= 4 であるため、処理する引数が他にないことがわかります。

のような式でプレインクリメント演算子を使用しても混乱しないでください*++argv[0]。引数は個別の配列要素で渡されます。

シェルがコマンドを実行するとき、空白を使用してコマンド行をプログラム名と引数に分割し、それらをプログラムに渡します。たとえば、名前にスペースが含まれているファイルを処理する必要がある場合など、二重引用符を使用して回避する必要がある場合があります。

mv some stupid filename sane_filename  

「some」「stupid」「filename」は別の引数と見なされるため、これは機能しません。しかし、これを行うことができます:

mv "some stupid filename" sane_filename

スペースが埋め込まれた単一の引数を取得します。

于 2013-11-01T00:37:50.990 に答える
2

++n プレインクリメント演算子は、適用される変数を変更します。1 回目は実行され、実際には元の値の要素を指す++argv位置にインデックスを付け、2 回目は element を指し、というように続きます。01argv2

于 2013-11-01T00:32:01.203 に答える