Ok, also habe ich Bucky Roberts Tutorials über C-Programmierung geschaut und die erste Aufgabe, die er den Zuschauern gibt Machen Sie ein Programm, das prüft, ob ein Passwort mindestens ein Großbuchstabe, eine Ziffer und ein Dollarzeichen hat.
Dies ist mein Code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int main()
{
int upper = 0;
int digit = 0;
int dollar = 0;
char password[16];
int loop = 1;
while(loop == 1){
printf("Enter your password: ");
scanf(" %s", password);
int i;
for(i = 0; i <= 16; i++){
printf(" %c", password[i]);
if(isupper(password[i])){
upper = 1;
printf("\t is upper");
}
if(isdigit(password[i])){
digit = 1;
printf("\t is digit");
}
if(password[i] == '$'){
dollar = 1;
printf("\t is dollar");
}
printf("\n");
}
if((upper == 1) && (digit == 1) && (dollar == 1)){
printf("Your password is valid\n");
loop = 0;
} else {
printf("Your password is invalid\n");
}
}
return 0;
}
Das Programm druckt diese in der Konsole nach einer Eingabe von 'P4sswoRd':
Enter your password: P4sswoRd
P is upper
4 is digit
s
s
w
o
R is upper
d
╨
@
ö
`
$ is dollar
Your password is valid
Keiner der Passwörter i enthalten eingegeben das Zeichen '$' Dennoch findet das Programm immer noch einen Weg, es zu erkennen. Der Grund dafür ist, dass er "is digit" oder "is dollar" druckt, nachdem der Charakter überprüft hat, was im Code falsch gelaufen ist und warum die Passwörter gültig sind. Ich habe keine Ahnung, warum all diese zufälligen Charaktere gedruckt werden, und ich würde eher wissen, was mit meinem Programm falsch läuft, anstatt eine neue Herangehensweise an die Aufgabe zu machen.
Ok, so fixierte i, dass ein Teil des Codes (danke durch die Art und Weise), aber das nur zum Teil darauf fixiert. Es wird nicht immer gültig gedruckt, solange ein Großbuchstabe und eine Ziffer vorhanden sind. Wenn das Passwort 1A ist, ist es gültig, 1a ist ungültig. Die zufällige Liste von seltsamen Zeichen ist immer noch vorhanden, vielleicht hat es etwas mit der Variable i und ihrer Verwendung beim Erkennen des '$' - Zeichens in der for-Schleife zu tun. –
Schauen Sie sich die [this] (https://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm) Seite an: Sie sollten den Rückgabewert von scanf verwenden. –