我给给数组赋予新的字符数有问题。即使当n是12时,我也不知道为什么我会得到“<”符号?我的程序应该将表达式int char* tab = "93+"
更改为这种情况下的一个值12
。切换并向数组添加char值
char* tab = "93+";
int b = sizeof (tab);
char* tmp = new char[b] ;
tmp [b-1] = '\0';
if(isdigit(tab[i]) && isdigit(tab[i+1])){
int n;
if(tab[i+2]=='+' || tab[i+2]=='-' || tab[i+2]=='*'){
switch(tab[i+2]){
case '+':
n = (tab[i]-'0') + (tab[i+1]-'0');
break;
case '-':
n = (tab[i]-'0') - (tab[i+1]-'0');
break;
case '*':
n = (tab[i]-'0') * (tab[i+1]-'0');
break;
}
tmp[i] = n+'0'; // I should have 12 but I get <
}
else if (tab[i+2]!='+' || tab[i+2]!='-' || tab[i+2]!='*'){
goto LAB;
}
}
大家知道,'sizeof(tab)'将永远是指针的大小,而不是它指向的字符的数量,所以这是错误的。 'sizeof(some_array)'会给你元素的数量,'sizeof(char *)'就是你正在做的事情。 – 2012-04-17 18:04:36
所以使用'strlen(tab)'。在'“”'中给出的字符串也自动以'\ 0'分隔。 – 2012-04-17 18:07:13
你可以使用比goto更好的东西的可能性非常高。 – chris 2012-04-17 18:09:09