配列に新しいchar値を与えることに問題があります。 nが12であっても "<"と表示される理由は分かりません。私のプログラムは、12
の式int char* tab = "93+"
を1つの値に変更する必要があります。スイッチに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 *)'はあなたがやっていることです。 –
したがって、 'strlen(tab)'を使用してください。 '" "'で与えられた文字列も自動的に '\ 0'で区切られます。 –
gotoよりも優れたものを使うことができる確率は非常に高いです。 – chris