gpt4 book ai didi

c - 为什么输出是一个框中的问号而不是数字

转载 作者:行者123 更新时间:2023-11-30 20:17:38 24 4
gpt4 key购买 nike

我正在做一个简单的中缀到后缀转换程序,但是在输入生成的后缀表达式时,数字在框中显示为问号。我该怎么做才能让输出为数字?

我不知道哪部分代码导致了这个问题。

bool convert(char inf[], char post[])
{
char term;
int i, k, length, oprn;
nd top;
top = createStack();
length = strlen(inf);
for(i=0, k=-1; i<length; i++)
{
term = inf[i];
if(isdigit(term))
{
oprn = term - '0';
post[++k] = oprn;
}
else if (term == '(')
{
push(&top,term);
}
else if (term == ')')
{
bool empty;
empty = isEmpty(top);
while(!empty && peek(top) != '(')
post[++k] = pop(&top);
if(!empty && peek(top) != '(')
return -1; //the expression is not valid
else
pop(&top);
}
else //if term is an operator
{
bool empty;
empty = isEmpty(top);
if(empty){
push(&top,term);}
else
{
while(!empty && prec(term)<=prec(peek(top)))
post[++k] = pop(&top);
push(&top,term);
}
}
}//end of for loop
while(!isEmpty(top))
post[++k] = pop(&top);
post[++k] = '\0';
}

我在 main 中使用 this 调用了该函数

int main(void)
{
bool ok;
char inFix[s];
char postFix[s]="";

getInfix(inFix);
ok = convert(inFix,postFix);
if(ok)
{
printf("\n\nThe resulting postfix expression is: ");
puts(postFix);
}
else
{
printf("\n\nAn error has occurred...");
}
getch();
return 0;
}

最佳答案

您在这里减去了 term '0',这意味着您的数字现在不再是 ASCII '0' 到 ASCII '9',而是数字 char 0 到 char 9,对应于一堆 ASCII 控制字符。

    if(isdigit(term))
{
oprn = term - '0';
post[++k] = oprn;
}

关于c - 为什么输出是一个框中的问号而不是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56713550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com