S
sizeof()-freak schrieb:
supertux schrieb:
sizeof(test) würde immer 4 ausgeben...
falsch. sizeof(test) würde immer die grösse eines 'char*' ausgeben.
verdammt, einmal eine ungenaue Antwort und dann gibt's Gemekcer. Unrecht hast du aber nicht.
jsbach schrieb:
Ich habe gerade festgestellt, dass Nutzung von sizeof() schlechte Idee ist, wenn man string-concats durch memcpy macht...
ist klar, dafür ist man: strlen(3) da (und generell besser geeignet, wenn man mit der Länge des Strings arbeiten muss!). sizeof(x) gibt dir lediglich den Speicherverbrauch an, den durch x verursacht wird.
Was deinem Code anbetrifft: Um Strings zu kopieren gibt es: man: strcpy(3) und man: strncpy(3). Um Strings einanander zu hängen gibt es man: strcat(3) und man: strncat(3). Es sollte außerdem p += SATRIANI_LEN - 1; heißen, denn sonst kopierst du CRLF ab dem ersten abschließenden \0 und deswegen sieht es so aus, als würde memcpy das nicht kopieren. Du musst nämlich das abschließende \0 von SATRIANI mit dem ersten Zeichen von CRLF überschreiben.
Validert der memcpy am anfang ob der Zeiger auf Null-Byte zeigt oder nicht?
nein, die Funktion memcpy interessiert es nicht, ob sie \0 Zeichen kopiert oder nicht, sondern wie viele Bytes sie kopiert.