我給給數組賦予新的字符數有問題。即使當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