FJO schrieb
Die durch die Initialisierung mit doppelten Anführungszeichen erzeugten Strings sind Konstanten und können folglich nicht verändert werden.
Nur die folgenden können nicht mehr geändert werden:
char *arg[]={"agetty", "38400", "vc/1", "linux"};
wusste ich bis heute auch nicht.
Der folgende Code funktioniert, außer du entfernst die Kommentarzeichen aus Zeile 14!
Das Problem mit dem Zahl reinschreiben ist auch, das du jede Zahl für jede Dekadenstelle einzeln schreiben müsstest und mit 48 addieren müsstest, da die Zahlen in ASCII um 48 versetzt sind.
Willst du also 348 schreiben, musst
arg[0]=3+48
arg[1]=4+48
arg[2]=8+48
schreiben.
#include <stdio.h>
int main(void)
{
int ret=0;
char arg_a[3][6]={"vc/1", "linux", "348"};
char *arg_b[] ={"vc/1", "linux", "348"};
char tmp=3;
printf("%s %s %c\n",arg_a[0],arg_a[1],arg_a[2][1]);
printf("%s %s %c\n",arg_b[0],arg_b[1],arg_b[2][1]);
arg_a[0][3]=tmp+48;
//arg_b[0][3]=240;
printf("%s %s %c\n",arg_a[0],arg_a[1],arg_a[2][1]);
printf("%s %s %c\n",arg_b[0],arg_b[1],arg_b[2][1]);
return ret;
}
cu