1

看到我有下面的代码

#include<stdio.h>
int main ( int argc, char *argv[] )
{
        int i=0;
        for(i=1;i<argc-1;i++)
          printf(" %s \n",argv[i]);
        return 0;
}

编译运行如下

gcc test.c
./a.out 1 * 2

现在它的 o/p 伤痕累累..!

o/p 是:

 1 
 a.out 
 Desktop 
 Documents 
 Downloads 
 ipmsg.log 
 linux-fusion-3.2.6 
 Music 
 Pictures 
 Public 
 Templates 
 test.c 
4

2 回答 2

5

在星号周围使用单引号:

./a.out 1 '*' 2

这应该可以防止您的 shell 将其解释为特殊字符。

于 2012-12-21T11:12:41.420 回答
4

您可以使用调用您的测试

./a.out 1 \* 2

如果您想将 * 作为参数传递。您还可以使用单引号'*'(如 Esa 建议的那样)或双引号"*"

另请注意,您的循环当前忽略了最后一个参数。i<argc如果这不是故意的,请用作您的退出条件。

于 2012-12-21T11:13:27.490 回答