Ok。もう一度始めましょう。逆ポーランド記法の引数を評価するプログラムを作成しようとしています。(つまり、./ program 2 4 +、これは6と評価されます)。
int main(int argc, char *argv[])
{
char oper[MAXOP];
char *ptr;
unsigned char c;
double op2;
while (--argc > 0 && ++argv != NULL) {
ptr = oper;
if (isdigit(c = **argv))
{
while (isdigit(c = **argv++))
{
*ptr++ = c;
}
*ptr = '\0';
push(atof(oper));
}
else if (isalpha(c))
{
while (isalpha(c = **argv++))
{
*ptr++ = c;
}
...
...
}
}
プログラムは、各引数の最初の文字がアルファ、数字、または演算子であるかどうかをチェックする必要がありますが、常にアルファであることがわかります。
+++++++++ UPDATE +++++++++++++
まあ、それは奇妙です。現在動作しています。条件の前は、
isdigit(c = **argv)
数値引数についてtrueと評価されていませんでした(コードの残りの部分が間違っていても問題ありませんでした)。今はそうですが、条件isdigit(c = **argv++)
が間違っています。
する必要がありますisdigit(c = *argv[0]++)
。
同じ名前のファイルが2つありました。それらは異なるディレクトリにありましたが、同じコードが含まれています。これを操作している間、私は他のディレクトリにいて、他のファイルをコンパイルしている必要があります。したがって、これを編集しても同じ出力が得られます。私の悪い。