Ausgabe von Zeichen auf dem Bildschirm



  • Hi,

    ich habe folgende Funktion zur Ausgabe eines Balkens auf dem Bildschirm programmiert:

    void zeichnen(int y, int anzahl)
    {
    int i;
    char balken[60];
    char zeichen[2]={ZEICHEN,'\0'};
    char *z_balken, *z_zeichen;
    z_balken = &balken[0];
    z_zeichen = &zeichen[0];
    gotoxy(X,y);
    for (i=0; i<anzahl; i++)
    strcat(z_balken,z_zeichen);
    puts(balken);
    }

    ZEICHEN und X sind mit #define als Konstanten definiert.

    Diese Funktion zeichnet leider nicht den gewünschten Balken auf den Bildschirm.

    Wo liegt mein Fehler?

    Vielen Dank für Eure Hilfe.

    Gruß



  • Du erstellst das Array balken, initialiserst es aber nicht, also ist es im Prinzip mit Zufallswerten gefüllt.
    Wahrscheinlich 'findet' strcat() dann das Ende des Strings nicht, bzw. an einer Stelle, die Du nicht beabsichtigst (wenn z.B. zufällig ein '\0' auftritt)

    [ Dieser Beitrag wurde am 16.10.2002 um 23:20 Uhr von Asgard editiert. ]



  • Warum machst du das so kompliziert und teilweise überflüssig?

    Das anzahlige Aufrufen von strcat() ist auch nicht gerade schnell. Machs doch einfach so:

    void balken (int y, int anzahl)
    {
     int i;
     gotoxy(X, y);
     for (i = 0; i < anzahl; i++)
      printf("%c", ZEICHEN); /* sollte dann auch als ein solches definiert sein */
     printf("\n"); /* neue Zeile anfangen */
    }
    


  • Hi,

    Auch wenn ich das Array balken initialisiere funkioniert die Funktion nicht korrekt.

    void balken (int y, int anzahl)
    {
    int i;
    gotoxy(X, y);
    for (i = 0; i < anzahl; i++)
    printf("%c", ZEICHEN);
    }

    Diese Variante hat den Nachteil, dass der Cursor während des Zeichnens auf den jeweiligen Bildpositionen sichtbar ist. Das soll nicht sein. Deshalb die umständliche Variante.

    Gruß


Anmelden zum Antworten