我正在制作一个基本计算器来熟悉传递参数。我编码的函数是:
int op(char* sig, int num1, int num2)
{
char sign=*sig;
if(sign == '+') return num1+num2;
if(sign == '/') return num1/num2;
if(sign == '-') return num1-num2;
if(sign == '*') return num1*num2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的主要函数获取数字和符号并调用“op”函数。
int main(int argc, char *argv[])
{
int num1=atoi(argv[1]);
int num2=atoi(argv[3]);
char* sig=argv[2];
int res=op(sig,num1,num2);
printf("%d\n",res);
}
Run Code Online (Sandbox Code Playgroud)
问题是当我使用“./”命令通过终端调用程序时,它不会将该*符号视为字符。相反,当我*在参数中使用时,该参数就变成了pipewriter.c我编码的文件的名称。例如,./pw.exe 3 + 4打印7时./pw.exe 3 * 4只打印 0。
如何将*符号用作字符'*'?
*是 shell 的一个特殊字符(用于文件名通配),因此如果您想将一个字符作为参数逐字传递给程序,您需要引用或转义它:
'*'"*"\*这三者之间的区别(以及为什么您可能想要使用其中之一)在于它们如何与变量扩展交互。出于您的目的(不涉及 shell 变量),其中任何一个都可以。