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!