在计算器程序中使用 ASCII 转换进行编程



我需要一些关于我的简单计算器程序的帮助。在我使用*符号进行乘法之前,它似乎工作正常。当我使用*符号时,它显示为99而不是42的 ASCII 等价物。它期望的参数是一个整数,运算符(+-*/)和另一个整数。

#include <stdio.h>
#include <stdlib.h>

/*
void usage() {
printf("This is a calculator program, just put in to numbers and and operatorn");
printf("Example:nt2 + 2n");
}
*/
int main(int argc, char *argv[]) {
int first_number, second_number;
int symbol;
int sum;
first_number = atoi(argv[1]);
second_number = atoi(argv[3]);
symbol = (int)*argv[2];

printf("symbol varable = %dn", symbol); // debugging for argv[2]
if (symbol == 43 ) {
sum = first_number + second_number;
printf("sum = %dn", sum);
}
else if (symbol == 45 ) {
sum = first_number - second_number;
printf("sum = %dn", sum);
}
else if (symbol == 42) {
sum = first_number * second_number;
printf("sum = %dn", sum);
}
else if (symbol == 47) {
sum = first_number / second_number;
printf("sum = %dn", sum);
}
return 0;
}

问题与您的代码无关。

当您使用命令行参数(如12 * 12)运行程序时,您将通配符放入命令行中,shell 会看到*并将其替换为目录中每个文件名的列表 - 如果符号以 99 开头,则目录中的第一个程序必须以小写 c 开头。

要使其正常工作,请转义命令行参数(如12 '*' 1212 * 12)或完全禁用文件名通配,如以下答案所示: 停止 shell 通配符扩展?

最新更新