0

文字列を比較する簡単なアプリケーションを作成しました。私の問題は空白です。サンプルコードは次のとおりです。

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

    if(strcmp(argv[1], "go up")==0){
        printf("up up and away\n");
    } 

    if(strcmp(argv[1], "down")==0){
        printf("down you go\n");
    }
    return 0;
}

でコンパイルした後gcc -o try try.c、ターミナルで実行します。

./try go up  // doesn't show anything
./try down //prints down you go

Linux ターミナルで空白を使用することはできますか?

4

3 に答える 3

4

はい、逃げるしかありません。あなたの場合、プログラムは「上がる」を2つの引数として認識します。

これを試して:

./try go\ up
于 2012-08-21T21:01:15.590 に答える
3

Linuxターミナルで空白を使用することは可能ですか?

スペースを引用してみてください:

./try 'go up'

補足:argcで何かを使用する前に確認する必要がありますargv

于 2012-08-21T21:01:20.690 に答える
2

Linux ターミナルから空白を使用することができます。

次のことを試してください。

./try "go up"
./try go\ up

どちらの場合も、システムは期待どおりに応答するはずです。

argv標準シェルは、空白に基づいて行を配列に自動的に分割します。引用符は、テキストを単一の文字列として扱うようにパーサーに指示し、「Program Files」などのディレクトリへのアクセスを許可します。バックスラッシュはスペースをエスケープし、行を分割するための空白ではなく、特殊文字として扱うようにパーサーに指示します。

于 2012-08-21T21:07:59.087 に答える