好的。让我重新开始。我正在尝试编写一个程序来评估它的反向波兰符号参数。(即 ./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;
}
...
...
}
}
程序应该检查每个参数的第一个字符,如果它是字母或数字或运算符,但它总是结果是一个字母。
+++++++++ 更新 +++++++++++++
嗯,这很奇怪。它现在正在工作。在条件之前,
isdigit(c = **argv)
对于数字参数没有评估为真(如果其余代码错误则无关紧要)。现在可以了,但条件isdigit(c = **argv++)
是错误的。
应该是isdigit(c = *argv[0]++)
。
我有两个同名文件。它们位于不同的目录中,但包含相同的代码。在使用这个文件时,我必须在另一个目录中编译另一个文件,因此尽管对这个文件进行了编辑,但得到了相同的输出。我的错。