Problem mit *Var[] und scanf
-
Wie kann ich bei folgendem Quellcode direct ein Array-Element mit scanf aendern?
#include <stdio.h> int main() { int i; char *Tage[] = {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"}; scanf("%s",Tage[3]); //Hier ist das Problem for(i = 0;i < 7;++i) { printf("%s\n",Tage[i]); } getchar(); }
-
char* tage[] legt ein array von konstanten strings an
so muss es heißen:
char tage[][11] = { ... }
-
DrGreenthumb schrieb:
char* tage[] legt ein array von konstanten strings an
so muss es heißen:
char tage[][11] = { ... }Ja aber ohne scanf kann ich das Array ja verändern.
Tage[3] = "Test"; /* z.B. */
-
mit tage[3] = "text" änderst du das tage-array, (tage[3] zeigt jetzt auf "text") aber nicht den text der hinter tage[3] steht.
tage[3][0] = 'x' würde dagegen schiefgehen.
-
DrGreenthumb schrieb:
mit tage[3] = "text" änderst du das tage-array, (tage[3] zeigt jetzt auf "text") aber nicht den text der hinter tage[3] steht.
tage[3][0] = 'x' würde dagegen schiefgehen.
Okay, Danke.
Also kann ich *Var[] nicht verändern, da konstant.
Und ich muss Var[][] nehmen, richtig?
-
ja, bzw. wichtig ist eben dieser unterschied:
char* s = "hallo"; // konstant
char s[] = "hallo"; // änderbar
-
DrGreenthumb schrieb:
ja, bzw. wichtig ist eben dieser unterschied:
char* s = "hallo"; // konstant
char s[] = "hallo"; // änderbarDanke, über den Dereferenzierungsoperator kann ich also *s auch nicht mehr verändern?!
-