Ist dieser Funktionsaufruf von strcat() unbedenklich??
-
Wie die überschrift schon sagt würde ich gerne wissen ob man das so programmieren darf? Wenn ja, kann man diese Art der Formatierung mit unzähligen Parametern fortsetzen, solange die Maximalgrösse von "buffer" noch nicht erreicht ist?
strcat(buffer, (char *)("unsigned:%u ",u_zahl)); strcat(buffer, (char *)("integer:%i ",i_zahl)); strcat(buffer, (char *)("u_short:%uh ",uh_zahl)); strcat(buffer, (char *)("2 strings:%s %s ", str_01, str_02));
-
sieht nicht gut aus. strcat kennt weder printf-formatiereungen noch va_args.
-
Das funktioniert definitiv nicht - und liefert bestimmt nur Datensalat (oder SegFault's). Wenn du deine Eingaben in einen String formatieren willst, nimm dafür lieber sprintf().
wenn du den String stückweise zusammensetzen willst, mußt du jeweils einen Zeiger auf das aktuelle String-Ende übergeben - oder gleich deine Leseposition mitschleifen:
char buffer[BUFSIZE]; char* writepos=buffer; int writelen; writelen = sprintf(writepos, "unsigned:%u ",u_zahl);writepos+=writelen; ...
(über den verfügbaren Platz mußt du dir selber Gedanken machen - notfalls mit Hilfe von snprintf())