我正在尝试查看*是否作为argv中的参数传入,但我不确定如何开始测试它。当我做了
printf("%s\n", argv[1]);
代码打印出1.我测试并运行
./a.out \*
为了逃避输入,它确实有效并打印了“*”,但是我希望能够传入*而不会逃离用户端并且能够看到*被传递。我不能只测试
if (strcmp(argv[1], "1") == 0)
因为如果我像
那样传入1,那就是在测试./a.out 1
我该怎么做?
答案 0 :(得分:3)
这与c无关。它是你的shell在运行你的程序之前处理它的行。你没有指定你的操作系统,但你需要转义任何
的参数答案 1 :(得分:3)
shell在运行程序之前负责命令行预处理。 *
被称为通配符。它不是唯一的通配符,还有?
,[
,{
和$
的替代。您可以通过在\
前添加前缀或在引号'
./a.out '*'
我不能只测试
if (argv[1] == "1")
因为如果我像
那样传入1,那就是在测试
./a.out 1
你也无法测试它。 argv[1] == "1"
不比较字符串,它比较指针,比较总是错误。