我不得不建立一個C程序,它使用STACK將中綴表示法轉換爲後綴表示法。這進展順利,並以某種方式工作。很久以前,當我使用上次的C語言時,我可能不會很好地使用char []變量。C langugage - char []輸出中的「奇怪」字符
所以問題是,當我給這樣的輸入:
A+B*(C*E-D)
我的程序返回此:
ABCE*D-*+ĚĚĚĚĚĚĚĚĚĚĚ
所以你看我的節目做後綴的轉換非常好,但我有一堆「垃圾」字符在我的結果(ĚĚĚĚĚĚĚĚĚĚĚ)。
這裏是我的代碼(只有我認爲是不正確的,或許真的用的char []和方式如何我assing值與postfix []可變部分片段:
int main()
{
char infix[20], postfix[20];
int len, tip, i, p=0;
STACK pom;
MAKE_NULL(&pom);
printf ("Unesi izraz.\n");
scanf ("%s", infix);
len = strlen(infix);
for(i=0; i<len; i++)
{
tip = nadi_tip(infix[i]);
if (tip == Lijeva)
{
PUSH (infix[i], &pom);
}
if (tip == Operand)
{
postfix[p] = infix[i];
p++;
}
if (tip == Desna)
{
while (!EMPTY(pom) && (TOP(pom)!= '('))
{
postfix[p++] = TOP(pom);
POP (&pom);
}
POP (&pom);
}
if (tip == Operator)
{
while (!EMPTY(pom) && TOP(pom)!= '(')
{
if(prioritet(infix[i]) <= prioritet(TOP(pom)))
{
postfix[p++] = TOP(pom);
POP (&pom);
}
else break;
}
PUSH(infix[i], &pom);
}
}
while (EMPTY(pom) != 1)
{
postfix[p++] = TOP(pom);
POP(&pom);
}
printf("Izlaz: %s", postfix);
return 0;
}
綴[]是我的輸入後綴[]是我的輸出。我做了什麼錯了,我爲什麼我在ĚĚĚĚĚĚĚĚĚĚĚ字符。謝謝你在前進!
感覺你在轉換的字符串中缺少空終止符? –
謝謝大家!如果我能,我會標記你的答案是正確的!初學者我的錯誤:)我忘了做一些基本的事情:) – rjovic