String vergleich fehlerhaft
-
Hallo an alle,
ich habe ein Problem mit strcmp. Ich habe z.B. folgenden code:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { //Eingabe und vergleichsvariable! char eingabe[5], verg[5]; verg[0]=1;verg[1]=2;verg[2]=3;verg[3]=4;verg[4]=5; printf("Zahlen von 1 bis 5 eingeben:\t"); gets(eingabe); if(strcmp(eingabe, vergleich)==true) { printf("RICHTIG!\n"); } else { printf("FALSCH!\n"); } fflush(stdin); getchar(); }
Wenn ich z.B. 12345 eingebe, dann kommt ja die Meldung "Richtig!", aber wenn ich 12 eingebe kommt auch "Richtig!", wie kann ich das vermeiden?
-
Schau dir nochmal an, was der Rückgabewert von strcmp aussagt.
-
MFK schrieb:
Schau dir nochmal an, was der Rückgabewert von strcmp aussagt.
Habe ich mir jetzt angeschaut, aber egal was ich eingebe ob; 123 oder 12345, der rückgabewert ist immer 1 bei mir.
-
sly020 schrieb:
Habe ich mir jetzt angeschaut, aber egal was ich eingebe ob; 123 oder 12345, der rückgabewert ist immer 1 bei mir.
Erstens vergleicht strcmp nicht einen String mit einer Liste von möglichen Zeichen, sondern zwei nullterminierte Strings miteinander.
Zweitens ist dein Array verg nicht nullterminiert.
Und drittens gibt strcmp bei Gleichheit 0 zurück (darauf wollte ich ursprünglich hinaus).
Nachtrag:
Viertens enthält dein Array nicht die Zeichen '1' bis '5', sondern die Zahlen 1 bis 5. Das ist ein Unterschied.Und fünftens sollte dir klar sein, dass in dein Eingabearray nur vier Zeichen passen.