C langugage - "Komische" Zeichen in char[] output

Musste ich bauen Sie ein C-Programm, das convert infix-notation in postfix-notation mit Hilfe von STACK. Das ging auch ganz gut und es funktioniert in gewisser Weise. Es war lange her, als ich das Letzte mal genutzt C-Sprache, also bin ich wahrscheinlich nicht mit char [] - Variablen sehr gut.

Also problem ist, dass wenn ich Beiträge wie diese :

A+B*(C*E-D)

Mein Programm gibt diese :

ABCE*D-*+ĚĚĚĚĚĚĚĚĚĚĚ

So, wie Sie sehen, mein Programm hat postfix Konvertierung sehr gut, aber ich habe Haufen "Müll" chars auf mein Ergebnis (ĚĚĚĚĚĚĚĚĚĚĚ).

Hier ist der Ausschnitt aus meinem code (nur ein Teil, dass ich denke, dass ist nicht korrekt, vielleicht etwas mit char[] und Weg, wie ich assing Wert auf postfix[] variable:

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;

}

infix[] ist mein input-und postfix[] ist mein Ausgang. Was habe ich falsch gemacht ich, warum bin ich mit ĚĚĚĚĚĚĚĚĚĚĚ Zeichen. Vielen Dank im Voraus!

  • Fühlt sich wie Sie fehlt ein null-terminator auf Ihre konvertierten string?
  • Vielen Dank Euch allen!! Wenn ich könnte, würde ich markieren Sie alle Antworten als korrekt! Anfänger-Fehler von mir 🙂 ich habe vergessen, eine grundlegende Sache 🙂
InformationsquelleAutor rjovic | 2011-11-09
Schreibe einen Kommentar