char* test; test[0] = '1'; (geht) - test[0] = '123' (geht nich) wie mehrere zeichen?
-
Wie kann ich ich mehrere Zeichen in die Stelle Packen, auf die der Zeiger zeigt?
-
Da die Stelle nur ein Zeichen breit ist: GARNICHT! :p
"Das Auto passte noch in die Parklücke, aber die Laterne nicht mehr"
EDIT: Du suchst vermutlich strcpy(test, "123");
NOCHMAL EDIT: Mit "char *test" hast Du zunächst mal einen unintialisierten Zeiger. Zu diesem Zeitpunkt passt noch kein einziges Zeichen an die Stelle.
-
Du musst dem Zeiger einen reservierten Speicherbereich zuweisen!
char *p; p=malloc(AnzahlDerZeichen+1); //sizeof(char) ist immer 1, und terminierende 0 nicht vergessen strcpy(p,"Hallo, Welt\n");
test ='123', sind mehrere Zeichen, also ein String. Strings können nur mit strcpy() zugewiesen werden, oder von Hand.
-
test[0] = '1'; test[1] = '2'; test[3] = '3';
-
Also Speicher besorgt habe ich.
Nun möchte ich aber gerne an die erste Stelle im Speicher einen Wert >9 reinschreiben, dass muss doch möglich sein.
Also das da quasi steht:
99 | h | a | l | l | o
Oder geht das gar nciht?
-
Ja, Du kannst den 1 Byte grossen Wert 99 da reinschreiben. Das entspricht dem Zeichen 'c'. Die folgenden Befehle entsprechen sich also:
test[0] = 99;
test[0] = 'c';
-
aah, alles klar. danke
-
Hallo cmg
Du kannst einem char keinen zeichenfolge zuweisen. Wenn du das machen willst brauchst du einen Zeiger auf ein Array oder du Arbeitest mit Zeiger auf Zeiger.
So nach dem Motto:
[cpp] char *test[10]; test[0] = (char*)malloc(sizeof(char) * 4); strcpy(test[0], "123"); puts (test[0]); free(test[0]); [/cpp]
Brauchst du den String Array dynamisch gibts dazu ne sehr gute beschreibung unter
http://www.c-plusplus.net/forum/viewtopic-var-p-is-284460.html
-
curry-king schrieb:
test ='123', sind mehrere Zeichen, also ein String.
Nicht ganz, ein String ist es nicht, sondern ein "integer character constant". Sowas lässt sich allerdings nur in int speichern.