我正在制作一个小程序,我提供命令行参数
例如./a.out 2 3 4 + *
当它出现'*',而不是打印'*'本身时,它打印目录'+'内的文件夹工作正常。请让我知道如何删除此错误。我想在这里打印'*'。
#include <stdio.h>
int main(int argc, char *argv[])
{
char *c;
while(--argc > 0)
{
c = *++argv;
if(strcmp(c,"+") == 0 )
{
printf("%s",c);
}
else if(strcmp(c,"-") == 0)
{
printf("%s",c);
}
else if(c[0] == '*')
{
printf("%s",c);
}
}
}
答案 0 :(得分:9)
这与您的代码无关,而是与您的shell无关。如果你想要shell不是通配符通配符,那么你需要使用反斜杠或带引号来转义它们。
./foo \*
./bar '*'
答案 1 :(得分:4)
您的shell将'*'字符解释为当前目录中所有文件的列表。问题不在你的程序中,而在于你运行它的方式。
尝试:
./ a.out 2 3 4 + \ *