Array ein element ändern??
-
Ganz dumme Frage, wie ändere ich ein Zeichen in meinem Array
Ich will nun aus ZZZZ ein AAZZ machen!
so hab ichs mir vorgestellt:char *barrier="ZZZZ";
printf("%s\n",barrier);
*(barrier) ='A';
*(barrier+1) ='A';
printf("%s\n",barrier);aber das geht nicht... wieder ein segmentation fault, woran liegts wohl??
Danke leutz,
Jacob
-
barrier ist ein Zeiger auf ein konstantes Array, deshalb gehts nicht. BTW kannst du statt *zeiger besser zeiger[0] und statt *(zeiger+1) besser zeiger[1] schreiben ...
Lösung: ein lokales Array definieren.
char array[] = "ZZZZ"; array[0] = array[1] = 'A'; puts(array); /* ==> AAZZ */
-
Es müsste aber auch mit
char *barrier="ZZZZ";
gehen, da wird dann automatisch Speicher für 5 Byte (4 Z's und eine '\0') reserviert!
-
Ja, aber als konstant anzusehender Speicher. Ein Schreibzugriff führt zu undefiniertem Verhalten.
-
Aber was ist dann char array[]="ZZZZ" als poniterschreibweise??
Müsste doch auch char *array="ZZZZ" sein?? ist das nicht identisch?? Und dann dürfte es soch nicht statisch oder konstant sein?
Ich will das lieber mit Pointer machen (persönliche Gründe :p )
-
char array[]="ZZZZ";
char *pointer = array;...
zufrieden? :p
-
Und das ist dann nicht mehr konstant??
Dann wäre ja alles in Butter!
-
Das ist dann ein Pointer auf ein auto Array.