質問
Cプログラム「Animal.C」を作りたいです。
そしてシェルで、
入力するとき
>animal -cat
結果は「Meow」です
>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
その結果、「/動物」で「猫」をファイルにします
ファイル「猫」の絶対的なパスは「/動物/猫」です
実行する方法 ?
オプション値を受信する別の方法はありますか?
解決
getopt コマンドラインオプションを解析する人気があり、ほぼ標準的な方法です。コマンドラインの引数を手で解析するのではなく、それ(または同様のもの)を使用する必要があります。それは非常にエラーが発生しやすいです。
他のヒント
ファイル名を渡す場合、その前に「 - 」を入れてはいけません。実際、「 - 」は「単一文字オプション* s* follow」を伝えるモディファイアです。「 - 」は、単一の文字がフォローするよりも長い名前を持つ「オプション」を伝えるモディファイアです。
痛みを緩和する最初のステップは、合格した引数の各文字をテストする代わりにSTRNCMPを使用することです。
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
そして、それはあなたが自分で値を入力するようなものです。