Suche eine bessere Funktion als strcpy und strcat



  • Hallo!

    Ich mal wieder!

    Ich habe ein Programm, das ein char Feld namens text[128] hat.

    In diesen Text soll viel reinkopiert werden, allerding hab ich keine Funktion gefunden mit der man das alles auf einmal machen kann. Hier mal ein kleiner Teil des Programms:

    strcpy(text, "\t     Karten\n\t  ------------\n\t   ");
    				strcat(text, str_eigenwert1);
    				strcat(text, " ");
    				strcat(text, str_eigenfarbe1);
    				strcat(text, "\n2. Karte:  ");
    				if(wertabfrage(ew, str_eigenwert2, text, 1)==0) goto karte1;
    				strcpy(text, "\t     Karten\n\t  ------------\n\t   ");
    				strcat(text, str_eigenwert1);
    				strcat(text, " ");
    				strcat(text, str_eigenfarbe1);
    				strcat(text, "\n2. Karte:  ");
    				strcat(text, str_eigenwert2);
    

    Wie kann ich das alles auf einmal machen? Sehr geeignet waere eine Funktion die in etwa so aussieht:

    stringcopy(text, "Dies ist ein Text mit %i Variablen und %i Zahlen", variablen, zahlen");
    

    So eine Funktion muss es doch geben... Oder wie würdet ihr das lösen? Vielen Dank schonmal!



  • Jepp, diese gibt es und nennt sich sprintf() oder vielleicht besser noch snprintf();

    Gruß mcr



  • Danke! 😉



  • Gibt es auch eine Funktion die nicht jedes mal überschreibt, sondern da weiter schreibt, wo man aufgehört hat?

    snprintf() funzt bei mir garnicht.



  • dahaack schrieb:

    Gibt es auch eine Funktion die nicht jedes mal überschreibt, sondern da weiter schreibt, wo man aufgehört hat?

    snprintf() funzt bei mir garnicht.

    strcat 😉 aber die willst du nicht benutzen. Mit sprintf kannst du das machen, ich weiß nicht, warum du damit nicht klar kommst. Oder wo liegt denn die Schwierigkeit?



  • dahaack schrieb:

    Gibt es auch eine Funktion die nicht jedes mal überschreibt, sondern da weiter schreibt, wo man aufgehört hat?

    ganz einfach mit

    sprintf ( buffer, "%s dieser text wird nun an den vorherigen text von buffer angefuegt", buffer );
    

    mfg Gaste



  • Ach natürlich!

    Danke! 🙂



  • Hallo

    Gaste schrieb:

    ganz einfach mit

    sprintf ( buffer, "%s dieser text wird nun an den vorherigen text von buffer angefuegt", buffer );
    

    Das ist leider nicht sauber, da sich buffer überlappen. Besser ist dann:

    sprintf(buffer+strlen(buffer), " dieser Text wird nun an den vorherigen Text von buffer angefuegt");
    

    Wobei VORSICHT: du mußt selbst sicherstellen, dass das Ende von buffer nicht überschritten wird!

    Gruß mcr



  • Auch ne gute Idee 😉

    Danke!


Anmelden zum Antworten