nicht null-terminierter String (->pointer!)
-
edit:
hat sich erledigt!
danke, ich hab schon dauernd die terminierung entfernt, das aber nicht gemerkt aus anderen gründen..mfg
-
guggst du? schrieb:
Also eine einfache Methode um sicherzustellen daß dein String nullterminiert ist wäre so zu realieren:
strcpy(arr,arr);
das glaub' ich nicht. selbst 'strcpy' kann keine zaubertricks vollbringen.
-
So lange der Array groß genug ist, terminiert strcpy den String.
-
strcpy() kann nur funktionieren wenn src nullterminiert ist. Desweiteren ist strcpy(foo, foo) eh undefiniert, egal ob nun Strings oder sonstwas übergeben wird.
-
Tim schrieb:
Desweiteren ist strcpy(foo, foo) eh undefiniert
warum das? eigentlich sollte strcpy(foo, foo) bei einem nullterminierten string keine wirkung haben (alle zeichen einschliesslich der 0 auf sich selbst kopieren) und bei einem nicht-nullterminierten char-array bei der ersten, zufällig im speicher stehenden, 0 stoppen.
-
grökaz schrieb:
Tim schrieb:
Desweiteren ist strcpy(foo, foo) eh undefiniert
warum das?
Weil es so definiert wird:
man strcpy schrieb:
The strcpy() function copies the string pointed to by src, including the terminating null byte ('\0'), to the buffer pointed to by dest. The strings may not overlap, and the destination string dest must be large enough to receive the copy.
-
supertux schrieb:
The strings may not overlap
jo, aber die verfasser dieses textes dachten bestimmt an strcpy(foo, foo+x), was verständlicherweise datensalat geben kann. ich hab' z.b. letztens ein strcpy gesehen, dass so anfing:
char *strcpy (char *a, char *b) { if (a == b) return a; // oder b ... }
-
*lol*
@ net: Denke vielleicht auch mal an restrict. Im Standard ist der Prototyp ja:
char *strcpy(char * restrict s1, const char * restrict s2);
Da wäre strcpy( foo, foo ); schon ohne Code ein no-go.
-
nusspüree mit dill schrieb:
guggst du? schrieb:
Also eine einfache Methode um sicherzustellen daß dein String nullterminiert ist wäre so zu realieren:
strcpy(arr,arr);
das glaub' ich nicht. selbst 'strcpy' kann keine zaubertricks vollbringen.
yo hast schon recht ist mir auch aufgefalen nachdem ich den Quatsch geposte hab
-
Tim schrieb:
@ net: Denke vielleicht auch mal an restrict.
stimmt, das 'restrict' beisst dich mit 2 pointern, die auf gleiche oder überlappende bereiche zeigen.