bla[i]=wert;
würde helfen, aber diese verwendung ist ausdrücklich VERBOTEN
Das sollte IMHO aber gehen, auch wenn es vielleicht
eine eher ungewöhnliche Methode ist, um eine
Zeichenkette zu befüllen.
Folgender Code funktioniert hier (soll nur
ein Beispiel sein, nicht unbedingt zur Nachahmung
empfohlen...):
ap@zaphodb:~$ cat bla.c
#include<stdio.h>
int main(void) {
char bla[100];
int i=0, code[] = {65, 72, 65, 33, 10, 0};
do { bla[i]=code[i]; } while (code[i++]);
puts(bla);
return 0;
}
ap@zaphodb:~$ gcc -Wall -pedantic bla.c
ap@zaphodb:~$ ./a.out
AHA!
ap@zaphodb:~$
Dagegen funktioniert folgendes nicht:
ap@zaphodb:~$ cat bla.c
#include<stdio.h>
int main(void) {
char *bla="Diese Zeichenkette ist schreibgeschuetzt!\n";
int i=0, code[] = {65, 72, 65, 33, 10, 0};
do { bla[i]=code[i]; } while (code[i++]);
puts(bla);
return 0;
}
ap@zaphodb:~$ gcc -Wall -pedantic bla.c
ap@zaphodb:~$ ./a.out
Speicherzugriffsfehler
ap@zaphodb:~$
Mit
char bla[] = "Lange, sinnlose Zeichenkette";
geht es dann doch wieder, weil somit auf dem Stack ein
Array dynamisch und beschreibbar angelegt und die Zeichenkette
dorthin kopiert wird.
MfG
Andreas