Probleme mit ctype.h
-
Hallo zusammen!
Ich soll für die Uni ein kleines Programm in C Schreiben und komme einfach nicht weiter.
Ich soll testen, ob ein Passwort Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen enthält.
Dazu verwende ich die Funktionen isupper(), islower(), isdigit(), ispunct()
Aber bei mir funktioniert nur die isupper() Funktion. Alle anderen Funktionen geben generell 0 aus, egal ob es stimmt oder nicht. Die <ctype.h> habe ich eingebunden. Man kann echt wahnsinnig werden
Hier mal der Code, soweit ich bin:
#include <ctype.h>
#include <stdio.h>int main()
{
char szPasswort[100];
int iGross = 0, iKlein = 0, iZiffer = 0, iSonderzeichen = 0, iZeichen = 0, iKontrolle = 0;
int i,j,k,l,m;printf("Bitte geben Sie das zu pruefende Passwort ein:\n");
gets(szPasswort);// Anzahl der Zeichen des Passworts
for (i=0; szPasswort[i] != '\0'; i++)
iZeichen++;for (j=0; j<iZeichen; j++)
{
if (isupper(szPasswort[j]) == 1)
iGross = 1;
}for (k=0; k<iZeichen; k++)
{
if (islower(szPasswort[k]) == 1)
iKlein = 1;
}for (l=0; l<iZeichen; l++)
{
if (isdigit(szPasswort[l]) == 1)
iZiffer = 1;
}for (m=0; m<iZeichen; m++)
{
if (ispunct(szPasswort[m]) == 1)
iSonderzeichen = 1;
}iKontrolle = iGross + iKlein + iZiffer + iSonderzeichen;
printf("\n%d", iGross);
printf("\n%d", iKlein);
printf("\n%d", iZiffer);
printf("\n%d", iSonderzeichen);return 0;
}Wenn ich z.B "Test123..." eingebe, müsste ja 4 mal die 1 ausgegeben werden, aber es wird 1000 ausgegeben. Woran kann das liegen? Helft mir bitte!
Grüße Jan
-
a) Es gibt Code-Tags, den Code wird so keiner lesen.
b) Du bist hier im C++ Forum. Das gehört nach ANSI-C.Gruß
-
Die Funktionen, die du da benutzt, geben einen von Null verschiedenen Wert zurück, wenn das Zeichen passt. Das muss aber nicht 1 sein. Du darfst also nicht auf == 1 prüfen, sondern auf != 0.
-
Ist mein erster Beitrag gewesen.
Ich poste nochmal im ANSI-C Forum.
Danke...
-
Danke MFK!!!
Das war die Lösung.
In der Angabe vom Prof stand auf ==1 zu prüfen
Viele Grüße
Jan