Verhalten von char und (char *)
-
Hallo,
ich habe mir ein kleine Funktion gebaut, dasd heisst ich habs versucht und bin kläglich gescheitert. Die Funktion soll aus einem (chareinen Befehl auslesen und ausführen.
void execute(char *text) { char command[9]; int a = 0; //Counter while ( text[a+1]!='\0' && text[a+1]!=' ' && a<9) { command[a] = text[a+1]; a++; } command[a] = '\0'; if ( command == "help" ) { CHAThelp(); } else { printf ("%s: Kein gueltiger Befehl\n",command); } }
So wie es jetzt ist scheitert es am Vergleich command == "help". Für '\help' meldet er: "help: Kein gueltiger Befehl\n".
Wenn ich jetzt aus char command einen Zeiger mache (char *command) dann liefert printf ("%s",command) komischerweise nur den ersten Buchstabe, auch wenn der String länger ist.
Und warum funktioniert sowas wie command = "help"; noch nichteinmal ??
Wahrscheinlich mache ich einen grundlegenden (Anfänger-)Fehler, bitte klärt mich aufFür eine Korrektur der Funktion und vielleicht ein bischen Lesestoff zum Thema wäre ich sehr dankbar
fnord
-
strings vergleicht man mit strcmp
lesestoff: http://www.pronix.de/pronix-4.html
http://www-ccs.ucsd.edu/c/
http://www.cppreference.com/index.html
-
dankeschön