C :: Aufgabe #63 :: Lösung #2
2 Lösungen
#63
Passwortgenerator mit Parametern
Anfänger - C
von pocki
- 27.11.2014 um 18:11 Uhr
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
#2
von kathleenw (3600 Punkte)
- 15.07.2020 um 11:34 Uhr
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
int zufallszahl(int min, int max)
{
int zahl;
zahl= (rand()%((max+1)-min))+min;
return zahl;
}
int main(void)
{
//Deklarationen
int laengePasswort, zufall, i;
bool kleineBuchstaben, grosseBuchstaben, zahlen, sonderzeichen;
char antwort[2];
//Initialsierungen
i=0;
srand(time(NULL));
printf("***************************************\n");
printf("********** Passwortgenerator **********\n");
printf("***************************************\n\n");
printf("Wie lang soll das Passwort sein? ");
if (scanf("%d", &laengePasswort)!=1) {
printf("Sie müssen eine Zahl eingeben!");
return EXIT_FAILURE;
}
char passwort[laengePasswort];
printf("Soll das Passwort kleine Buchstaben enthalten? (j/n)");
fgets(antwort,2,stdin);
if (fgets(antwort,2,stdin)==NULL) {
printf("Fehler bei der Eingabe!\n");
return EXIT_FAILURE;
}
else {
if (antwort[0] == 'j') {
kleineBuchstaben = true;
}
else if (antwort[0] == 'n') {
kleineBuchstaben = false;
}
else {
printf("Sie dürfen nur ja(j) oder nein(n) eingeben!\n");
return EXIT_FAILURE;
}
}
printf("Soll das Passwort große Buchstaben enthalten? (j/n)");
fgets(antwort,2,stdin);
if (fgets(antwort,2,stdin)==NULL) {
printf("Fehler bei der Eingabe!\n");
return EXIT_FAILURE;
}
else {
if (antwort[0] == 'j') {
grosseBuchstaben = true;
}
else if (antwort[0] == 'n') {
grosseBuchstaben = false;
}
else {
printf("Sie dürfen nur ja(j) oder nein(n) eingeben!\n");
return EXIT_FAILURE;
}
}
printf("Soll das Passwort Zahlen enthalten? (j/n)");
fgets(antwort,2,stdin);
if (fgets(antwort,2,stdin)==NULL) {
printf("Fehler bei der Eingabe!\n");
return EXIT_FAILURE;
}
else {
if (antwort[0] == 'j') {
zahlen = true;
}
else if (antwort[0] == 'n') {
zahlen = false;
}
else {
printf("Sie dürfen nur ja(j) oder nein(n) eingeben!\n");
return EXIT_FAILURE;
}
}
printf("Soll das Passwort Sonderzeichen enthalten? (j/n)");
fgets(antwort,2,stdin);
if (fgets(antwort,2,stdin)==NULL) {
printf("Fehler bei der Eingabe!\n");
return EXIT_FAILURE;
}
else {
if (antwort[0] == 'j') {
sonderzeichen = true;
}
else if (antwort[0] == 'n') {
sonderzeichen = false;
}
else {
printf("Sie dürfen nur ja(j) oder nein(n) eingeben!\n");
return EXIT_FAILURE;
}
}
//Passwort erzeugen
if (kleineBuchstaben==false && grosseBuchstaben==false && zahlen == false && sonderzeichen ==false) {
printf("Sie müssen zumindest eine Art von Zeichen für das Passwort zulassen.\n");
}
else {
do {
zufall = zufallszahl(33, 126);
if (kleineBuchstaben == true && zufall>=97 && zufall<=122) {
passwort[i] = (char)zufall;
i++;
}
else if (grosseBuchstaben == true && zufall>=65 && zufall<=90) {
passwort[i] = (char)zufall;
i++;
}
else if (zahlen == true && zufall>=48 && zufall<=57) {
passwort[i] = (char)zufall;
i++;
}
else if ((sonderzeichen == true) && ((zufall>=33 && zufall<=47) || (zufall>=58 && zufall<=64) || (zufall>=91 && zufall<=96) || (zufall>=123 && zufall<=126))) {
passwort[i] = (char)zufall;
i++;
}
}while(i<laengePasswort);
//Ausgabe
printf("\nDies ist ihr Passwort: ");
for(i=0;i<laengePasswort;i++) {
printf("%c",passwort[i]);
}
printf("\n\n");
}
return EXIT_SUCCESS;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
