STACKを使って後置記号に変換するCプログラムをビルドする必要がありました。それはうまくいって、それは何らかの形で働いています。私は前回のC言語を使っていたので、char []変数はあまりうまく使用していませんでした。C langugage - char []出力の "奇妙な"文字
だから、問題は、私はこのような入力を与えるときということです:あなたは私のプログラムは非常によくpostfixの変換をした見たが、私はの束を持っているように
ABCE*D-*+ĚĚĚĚĚĚĚĚĚĚĚ
:
A+B*(C*E-D)
私のプログラムはこれを返します私の結果で "ガーベジ"の文字が表示されます。
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;
}
中置[]は私です:ここで
は私が[]多分、文字で何か正しくないと私は[]変数を後置する値をASSING方法どのように考えて自分のコードのスニペット(一部のみですあなたはNUL-終了postfix
に必要な入力とpostfixの[]私の出力である。私は、なぜ私はĚĚĚĚĚĚĚĚĚĚĚ文字を持っています間違って何をしました。事前にありがとうございます!
変換された文字列にヌルターミネーターがないような気がしますか? –
ありがとうございました!もし私が答えることができれば、すべての答えを正しいものとしてマークします。私の初心者のミス:)私はいくつかの基本的なことをするのを忘れて:) – rjovic