C - argv []作为参数传入*,打印时返回1

时间:2018-04-11 23:15:02

标签: c

我正在尝试查看*是否作为argv中的参数传入,但我不确定如何开始测试它。当我做了

printf("%s\n", argv[1]);

代码打印出1.我测试并运行

./a.out \*

为了逃避输入,它确实有效并打印了“*”,但是我希望能够传入*而不会逃离用户端并且能够看到*被传递。我不能只测试

if (strcmp(argv[1], "1") == 0)

因为如果我像

那样传入1,那就是在测试
./a.out 1

我该怎么做?

2 个答案:

答案 0 :(得分:3)

这与c无关。它是你的shell在运行你的程序之前处理它的行。你没有指定你的操作系统,但你需要转义任何

的参数

答案 1 :(得分:3)

shell在运行程序之前负责命令行预处理。 *被称为通配符。它不是唯一的通配符,还有?[{$的替代。您可以通过在\前添加前缀或在引号'

中包含参数来转义预处理通配符
./a.out '*'
  

我不能只测试

if (argv[1] == "1")
  

因为如果我像

那样传入1,那就是在测试
./a.out 1

你也无法测试它。 argv[1] == "1"不比较字符串,它比较指针,比较总是错误。