strcmp
-
hallo.
folgender code gibt immer die else-zeile aus, auch wenn ich das richtige passwort eingebe. irgendwie können die passwörter nicht miteinander verglichen werden. kann mir jemand helfen?/* bspl0040 */ #include <stdio.h> #include <string.h> #define MAX 10 main() { char geheim[10],passwort[80]; int versuch=3; geheim[3]='p'; geheim[2]=109; geheim[7]=114; geheim[5]=116; geheim[0]=67; geheim[9]='x'; geheim[1]=111; geheim[8]='\0'; geheim[4]=geheim[1]+6; geheim[6]=101; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Passwort eingeben.\n>"); fgets(passwort, MAX, stdin); if(strcmp(geheim,passwort) == 0) { printf("\nPasswort ok!\n"); break; } else printf("\nFehlerhaftes Passwort! \n\a"); versuch--; } while(versuch > 0); }
-
fgets
speichert das Newline \n-Zeichen mit. Dieses musst du löschenfgets(passwort, MAX, stdin); char *del_new_line = strrchr(passwort, '\n'); if(del_new_line) *del_new_line = 0; if(strcmp(geheim,passwort) == 0) ...
-
#include <iostream> #include <stdio.h> #include <string.h> #define MAX 10 int main() { char geheim[10],passwort[80]; int versuch=3; geheim[3]='p'; geheim[2]=109; geheim[7]=114; geheim[5]=116; geheim[0]=67; geheim[9]='x'; geheim[1]=111; geheim[8]='\0'; geheim[4]=geheim[1]+6; geheim[6]=101; printf("\nSie haben 3 Versuche.\n"); do { printf("\nBitte Passwort eingeben.\n>"); fgets(passwort, MAX, stdin); passwort[strlen(passwort)-1] = 0; // << if(strcmp(geheim,passwort) == 0) { printf("\nPasswort ok!\n"); break; } else printf("\nFehlerhaftes Passwort! \n\a"); versuch--; } while(versuch > 0); }
-
Und was, wenn das Passwort 9 Zeichen lang ist und am
strlen(passwort)-1
kein \n Zeichen sich befindet?