Noch eine Frage zu Strings
-
Hoffe diesmal wirds einfach zu verstehen was ich will.
char buf[MAX_PATH]; char buf2[MAX_PATH]; strcpy(buf,"Hallo ASD");buf is demnach jetzt "Hallo ASD".
Wie kann ich den String von buf nach buf2 kopieren ohne die ersten 4 Zeichen ?also das buf2 dann : "o ASD" waer
-
strcpy(buf2, &buf[4])?
Wobei dann 2 buffer unnötig sind... das geht auch so:
char cBuffer[MAX_PATH + 1]; strcpy(cBuffer,"Hallo ASD"); snprintf(cBuffer, MAX_PATH + 1, "%s", &cBuffer[4]);
-
Danke

Verstehe aber nicht warum &cBuffer[4];
Dennoch funktioniert es ^^Ist &cBuffer[4]; nicht einfach nur der 4.Buchstabe ?

-
PhoeNix_FasT schrieb:
Danke

Verstehe aber nicht warum &cBuffer[4];
Dennoch funktioniert es ^^Ist &cBuffer[4]; nicht einfach nur der 4.Buchstabe ?

Das '&' oder fachsprachlich Ampersand, wird in diesem Fall als Adressoperator eingesetzt...damit ermittelst du die Adresse der 4. Buchstaben im Array
Diese wird dann snprintf als 'Anfang' übergeben

-
[] bei arrays ist eigentlich dasselbe wie ein dereferenzierungsoperator *, nur dass man da noch angeben kann, um wieviel elemente man den pointer versetzt.
hab ich erst heute wirklich gerafft :p
hoffe schwer, dass ich auch wirklich das richtige gerafft hab^^
-
Im Grunde schon. Du solltest dir nur im Klaren sein, dass ein Array kein Zeiger ist.
Der Elementzugriff auf ein Array und mittels eines Zeigers, welcher auf den Anfang eines Arrays zeigt, ist wie folgt äquivalentarray[index] *(pointer + index)Allerdings ist folgendes ebenfalls möglich
*(array + index) pointer[index]weil array in diesem Fall zu einem Zeiger auf sein erstes Element evaluiert. Und pointer ebenfalls mit Indexoperator benutzt werden kann.