使用包含括号的输入字符串作为命令行参数时出错

时间:2016-10-21 20:22:51

标签: c

#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'

发生这种情况的原因是什么,我该如何解决?看起来它的括号是弄乱这个。感谢

1 个答案:

答案 0 :(得分:1)

()个字符对bash有特殊意义。使用引号强制bash将它们视为普通字符:

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