2016-10-21 26 views
0
#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#include <stdlib.h> 

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

    if (argc < 2) { 
    printf("Incorrect command line arguments.\n"); 
    return 0; 
    } 
    for (int i = 0; i < strlen(argv[1]);i++){ 
     printf("%c",argv[1][i]); 
    } 
    printf("\n"); 
} 

しかし、これをコンパイルした後、コマンドライン引数として括弧を含む文字列を入力使用して、私の出力です:エラー私は、この単純なコードを持って

./a.out 123 
123 
./a.out (1+2+3) 
bash: syntax error near unexpected token `1+2+3' 

これが起こっている理由は何で、どのように私がすることができます修理する?それはこれを台無しにしているかっこのように思えます。ありがとう

+0

あなたのプログラムは呼び出されていません。 Bashは、かっこのためにサブプロセスを実行しようとします。あなたがそれを渡したい場合は、引用符を使用してください。 –

+0

そのようなループで 'strlen'を何度も計算しないでください。 – aschepler

+0

この行: 'return 0;'はエラーが発生したときの戻り値が非常に悪いです。 'main()'の戻り値0は成功を示しているからです。提案: 'return 1;'または 'exit(1);'または 'exit(EXIT_FAILURE);のほうが良い。 – user3629249

答えて

1

()文字はbashと特別な意味を持ちます。引用符を使用して、bashにそれらを普通の文字として扱わせてください:

./a.out '(1+2+3)' 
+0

ありがとう。 – rezon

関連する問題