在字符串比较中使用*?

问题描述 投票:1回答:1

在比较我的C程序中的字符串时使用“ *”时遇到麻烦。有禁止使用它的规则吗?这是麻烦的代码:

else if(strcmp(argv[i], "*") == 0)
{
    printf("pos MULT: %d", pos);
    result = dubStack[pos-1] * dubStack[pos - 2];
    pos += 1;
}

当使用上面的代码运行程序时,我的打印语句无法运行,并且不会计算结果。但是,如果我更改字符串比较中的字符(如下所示;将*更改为m),则会执行正确的操作,并且print语句会起作用。使用*时,我缺少什么吗?

else if(strcmp(argv[i], "m") == 0)
{
    printf("pos MULT: %d", pos);
    result = dubStack[pos-1] * dubStack[pos - 2];
    pos += 1;
}
c string if-statement command compare
1个回答
2
投票

C字符串中的*没什么特别的:"*"是长度为1的无害字符串。

相反,*由命令外壳扩展为当前目录中文件和目录名称的排序列表。为防止这种情况,必须在命令行上将此字符加引号。这是执行此操作的不同方法:

$ myprog 1 1 \*
$ myprog 1 1 '*'
$ myprog 1 1 "*"
© www.soinside.com 2019 - 2024. All rights reserved.