我试图得到这个方程的输出:
44-10 + 11/5
它可以正常工作,如下所示:
char str[] = "44 - 10 + 11 / 5";
int sum = 0 ;
sum += atoi(str); // 0 + 44
sum += atoi(str+3); // 44 + 10
sum += atoi(str+5); // 54 + 11
sum += atoi(str+7); // 65 / 5 = 13
printf("%d/n",sum); // output = 13
但是如果我将atoi()
函数放入for
循环中则不起作用:
char str[] = "44 - 10 + 11 / 5";
int sum = 0;
int i;
sum += atoi(str);
for (i = 0; i < 100; i++) {
if (!(str[i] >= 0 && str[i] <= 9)) { //if str[i] is not a number
sum += atoi(str + i);
}
}
printf("%d/n", sum); // output = 0
您正在将包含数字的ASCII表示形式的char值与实际数字进行比较。改变
if(!(str[i]>=0 && str[i]<=9)){
至
if(!(str[i]>='0' && str[i]<='9')){
我没有检查其余代码是否正确,但是可以肯定的是,这是一个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句