0

Cプログラム「animal.c」を作りたいです。
そしてシェルで
、私がタイプするとき

>animal -cat

結果は「ニャー」です

>animal -dog

結果は「弓」です。
それは唯一の方法ですか?

void main(int argc, char **argv){
if(argv[1][0] == '-' && argv[1][1] == 'c' && argv[1][2] == 'a' && argv[1][3] == 't')
    printf("meow");
if(argv[1][0] == '-' && argv[1][1] == 'd' && argv[1][2] == 'o' && argv[1][3] == 'g')
    printf("bow");
}

それ以外の場合、「/ animal」にあるファイル「cat」を作成したい場合、
フォルダ「animal」がすでにルートディレクトリにあると仮定します。

     animal -cat  

その結果、「/animal」内
のファイル「cat」が作成されます。ファイル「cat」の絶対パスは「/animal/cat」です。

実行する方法 ?
オプション値を受け取る別の方法はありますか?

4

3 に答える 3

2

ファイル名を渡す場合は、その前に「-」を付けないでください。実際には、「-」は「単一文字オプション* s *フォロー」を指示する修飾子です。「-」は、「単一文字が続くよりも長い名前のオプション」を指示する修飾子です。

苦痛を和らげるための最初のステップは、渡された引数の各文字をテストする代わりにstrncmpを使用することです。

于 2011-04-27T08:10:29.317 に答える
0

getoptは、コマンドラインオプションを解析するための一般的でほぼ標準的な方法です。コマンドライン引数を手動で解析するのではなく、それ(または同様のもの)を使用する必要があります。非常にエラーが発生しやすくなります。

于 2011-04-27T08:09:28.897 に答える
0

how to do ?

最後の質問に答えるには、ファイルを作成するためにmkdirのようなものをfopenと組み合わせて使用​​する必要があります。

is there another way to receive option value? 入力をリダイレクトすることで「オプション」値を取得する方法があります。プログラムに2つのfgetsを持つ2つの行がある場合:

char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);

そしてdata.txtと呼ばれるファイルであなたは持っていました

 Bob
 04/27/11

次のように入力をプログラムにリダイレクトできます

 myprog < data.txt

自分で値を入力するようなものです。

于 2011-04-27T09:02:20.310 に答える