Strings werden mit strcmp nicht richtig ausgewertet
-
Guten Abend,
aus irgend einem Grund wird die strcmp Funktion nicht richtig ausgewertet. Egal welchen String ich übergebe es wird immer "anmelden!!!" ausgegeben. Und wenn ich dann wirklich anmelden übergebe hagelt es auch noch segmentation Fehler.
Ich hoffe ihr könnte mir in dieses Sache weiter helfen.
Beste Grüße und eine besinnliche Weinachtszeit wünscht
jutuuuu#include <stdio.h> #include<string.h> //forward void eingabe(void (*p)(char[], int) ); void parseStart(char string[], int size); void parseMain(char string[], int size); int main(){ eingabe(parseStart); return 0; } //-->start menu void eingabe(void (*p)(char[], int) ){ char e[100]; fgets(e,100,stdin); (*p)(e,100); } void parseStart(char string[], int size){ char delimiter[] = " "; char *ptr; char param1[100], param2[100]; ptr = strtok(string, delimiter); strcpy(param1, ptr); if(strcmp(param1, "anmelden\n")){ printf("anmelden!!!\n"); } if( strcmp(param1, "login\n") ){ ptr = strtok(NULL, delimiter); strcpy( param2, ptr); printf("login!!!"); } if(strcmp(param1, "quit\n")){ printf("quit!!!"); } } //<--menu end
-
strcmp() gibt bei Gleichheit 0 zurück. Und das ist logisch unwahr.
Also
if(!strcmp(param1, "anmelden")){ printf("anmelden!!!\n"); }
-
Danke für diese schnell und ausgezeichnete Hilfe.
:xmas1:
Beste Grüße
-
Lesbarer ist IMHO if(strcmp(str1, str2) == 0) statt !strcmp(...).
-
wxSkip schrieb:
Lesbarer ist IMHO if(strcmp(str1, str2) == 0) statt !strcmp(...)
Ja, lesbarer ist das auf alle Fälle. Im Originalposting stand aber if(strcmp(param1, ..)) und nicht if(strcmp(str1, str2) != 0))
Und hier geht es um C und nicht um Pascal