[GELÖST]c string zentrieren



  • Hallo community

    Habe folgende Aufgabe welche ich zu 95% erledigt habe,allerdings fehlt mir wie die Überschrift schon verrät die Zentrierung eines Strings. C kann ja von hause aus über printf links und rechstbündig einen String ausgeben,aber wie bekomme ich "Sortierte Folge" zentriert:

    Schreiben Sie ein Programm, das zwei eingelesene Zeichenketten, die jeweils
    in einem Vektor gespeichert sind, miteinander vergleicht. Die Eingabe der Zeichenketten soll
    durch eine Schleife mit Einzelzeicheneingabe realisiert werden. Stellen Sie sicher, dass bei einer
    zu langen Eingabezeichenkette der Vektor nicht überläuft. Als Ergebnis sollen die Zeichenketten
    in lexikalisch richtiger Reihenfolge ausgegeben werden. Die Ausgabe auf der Konsole soll folgende
    Form haben:
    +--------------------------+
    | Sortierte Folge |
    +--------------------------+
    | 1. Kette: |
    | 2. Kette: |
    +--------------------------+

    Die Breite der Kästen soll sich nach der längeren Zeichenkette orientierten. Die Überschrift soll
    dabei immer zentriert ausgegeben werden.



  • Hi,

    habe folgendes gefunden:
    http://www.planetcoding.net/thread.php?postid=14157
    vielleicht meinst du ja sowas.

    Gruß
    Manda



  • Oha, was du mal nicht echt fix warst,daher erstmal danke für die grob schnelle Reaktion. 🙂
    Hab mir den Link mal durchgelesen und verstehe was Hanffred so vor hat.
    Habe mal:

    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    char ueberschrift[80];
    int i;
    
    strcpy(ueberschrift, "Dieser Text ist zentriert");
    
    for(i=0;i<=int((80 - strlen(ueberschrift))/2);i++)
    {
    printf(" ");
    }
    
    printf("%s\n", ueberschrift);
    
    return 0;
    }
    

    durch den Compiler geschubst. Allerdings bringt er mir den Fehler:
    error: expected expression before ‘int’
    in der folgenden Zeile:

    for(i=0;i<=int((80 - strlen(ueberschrift))/2);i++)
    

    obwohl die meines Überschauens doch eigentlich richtig ist.



  • #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
        char ueberschrift[80];
        int i;
    
        strcpy(ueberschrift, "Dieser Text ist zentriert");
    
        for(i=0;i<=(int)((80 - strlen(ueberschrift))/2);i++) /* Cast in Klammern setzen! */
        {
             printf(" ");
        }
    
        printf("%s\n", ueberschrift);
    
        return 0;
    }
    


  • Hi,

    der cast muss in die klammer. So ungefähr:

    for(i=0; i<= (int)((80 - strlen(ueberschrift))/2); i++)
    

    (int)!!

    Gruß
    Manda



  • Man möge mich schlagen,das casten übersehen 😉
    Werde das gleich mal so in meiner main implementieren.

    Danke nochmal an MandaJohn und Sunny31



  • Bitte bitte,
    Sunny31 war wohl schneller als ich 🙂

    Gruß
    Manda



  • Noch eine allerletzte Frage anderer Art. Muss/Sollte/Kann ich den Beitrag noch irgendwie closen?



  • MandaJohn schrieb:

    Bitte bitte,
    Sunny31 war wohl schneller als ich 🙂

    Gruß
    Manda

    Hehehe,

    dafür hast du ihm auch gezeigt wo sein Fehler war...
    Hab das vergessen ):

    Noch eine allerletzte Frage anderer Art. Muss/Sollte/Kann ich den Beitrag noch irgendwie closen?

    Nein, aber du kannst im ersten Beitrag den Titel in "[GELÖST]..." ändern.


Anmelden zum Antworten