c-strings



  • Hi, hab da ein kleines problem, für ne Huasarbeit in Informatik 1.

    ich hab folgende Werte

    char zielstring[maxAnzZeich], fuellZeich[]="*",
    int maxAnzZeich

    wenn zielstring > maxAnzZeich
    , dann soll der zielstring mit maxAnzZeich des fuellZeich beladen werden.
    Bsp.:
    maxAnzZeich=50
    zielstring=60

    Ausgabe auf Bilsschirm 50*

    Weiß einer, wie ich das machen kann?

    Danke
    Tobo



  • Tobo23 schrieb:

    Hi, hab da ein kleines problem, für ne Huasarbeit in Informatik 1.

    ich hab folgende Werte

    char zielstring[maxAnzZeich], fuellZeich[]="*",
    int maxAnzZeich

    wenn zielstring > maxAnzZeich
    , dann soll der zielstring mit maxAnzZeich des fuellZeich beladen werden.
    Bsp.:
    maxAnzZeich=50
    zielstring=60

    Ausgabe auf Bilsschirm 50*

    Weiß einer, wie ich das machen kann?

    Danke
    Tobo

    Ich glaube Du bist im falschen Forum C oder gar C++ wären besser!

    /*
    
    char zielstring[maxAnzZeich], fuellZeich[]="*",
    int maxAnzZeich
    
    wenn zielstring > maxAnzZeich
    , dann soll der zielstring mit maxAnzZeich des fuellZeich beladen werden. 
    Bsp.:
    maxAnzZeich=50
    zielstring=60
    
    Ausgabe auf Bilsschirm 50*
    
    */
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    
        /*
        Habs mal für
        maxAnzZeich=10
        zielstring=20 
        abgewandelt isses das was Du wolltest sollte für die grobe Aufgabenstellung
        so funzen ohne anderweitige Fehler abzufangen!
    
        Informier Dich bitte mal über Zeichenkettenverarbeitung/Manipulation
    
        insbesondere über: sprintf
        */
        const int maxAnzZeich = 10;
        char zielstring[20];
        int tatsaechlich_Laenge;
    
        printf("Bitte etwas eingeben: ");
        scanf("%s",&zielstring); 
        getchar();
    
        if((tatsaechlich_Laenge = strlen(zielstring)) > maxAnzZeich)
        {
            sprintf(zielstring,"%s","");
            sprintf(zielstring,"%d*",tatsaechlich_Laenge);    
        }
    
        printf("\n%s",zielstring);
    
        getchar();
        return 0;
    }
    

    Mit freundlicher Unterstützung



  • Dein Füllzeich habe ich nisch mitreingenommen!
    Is direkt mit innen Aufruf von sprintf reinintegriert und berücksichtigt das.

    Das erste sprintf leert den Eingabepuffer (char-Array: zielstring) für so ominöse Ausgaben ala 50*

    Das zweite sprintf formuliert eben diese ominösen Ausgaben ala 50*
    in den Puffer (char-Array: zielstring)

    ja das sollte es zu Deiner Frage sein hoffe ich



  • #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    
        /*
        Habs mal für
        maxAnzZeich=10
        zielstring=20 
        abgewandelt isses das was Du wolltest sollte für die grobe Aufgabenstellung
        so funzen ohne anderweitige Fehler abzufangen!
    
        Informier Dich bitte mal über Zeichenkettenverarbeitung/Manipulation
    
        insbesondere über: sprintf
    
        für den Fall das Du nen Füllzeichen brauchst um es variabel zu halten dann so
        */
        const int maxAnzZeich = 10;
        char zielstring[20];
        int tatsaechlich_Laenge;
        char fuellzeichen = '*';
    
        printf("Bitte etwas eingeben: ");
        scanf("%s",&zielstring); 
        getchar();
    
        if((tatsaechlich_Laenge = strlen(zielstring)) > maxAnzZeich)
        {
            sprintf(zielstring,"%s","");
            sprintf(zielstring,"%d%c",tatsaechlich_Laenge,fuellzeichen);    
        }
    
        printf("\n%s",zielstring);
    
        getchar();
        return 0;
    }
    


  • Tobo23 schrieb:

    ... fuellZeich[]="*",

    Im übrigen für ein Zeichen brauch man nicht gleich ein Feld auch wenn man im Laden mit Arbeitsspeicher beworfen wird^^

    genügt auch:

    char fuellZeich = '*'; // brauch 1 Byte
    

    denn

    char fuellZeich[]="*"; // brauch 2 Byte
    

    mfg^^



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten