C++ Passwort Generator

04/09/2015 19:04 KingwondA#1
Hey,
ich erstelle mir grad einen Passwort Generator, jedoch möchte der nicht "laufen".
Im Spoiler ist die Fehlermeldung. Ich benutzte VS 2013 Ultimate.

Hier der Source Code:
Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>

#pragma comment(lib, "winmm.lib")

int main()
{
	static const TCHAR* myTitle = TEXT("Passwort-Generator");
	SetConsoleTitle(myTitle);

	std::string Buchstaben = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
	std::string Passwort;
	int laenge;
	srand(timeGetTime());

	std::cout << "Wie lang soll das Passwort werden: ";
	std::cin >> laenge;

	for (int i = 0; i < laenge; i++)
	{
		
		Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];

	}
	std::cout << Passwort << "\n";

	std::cin.get();
	return 0;
}
04/09/2015 19:15 bloodx#2
#pragma comment(lib, "winmm.lib");
04/09/2015 22:14 KingwondA#3
Quote:
Originally Posted by bloodx View Post
#pragma comment(lib, "winmm.lib");
Danke, hat mir nicht wirklich geholfen. :D
Kam danach ein weiterer Fehler den hab ich selber behoben.

Stehe grad ziemlich auf den schlauch, auch wenn die Lösung einfach sein mag ich komm einfach nicht drauf. xD

Ich möchte nun, dass ich auch angeben kann wie viele Passwörter ich erstellt haben möchte. Da muss definitiv eine Schleife her, nur bekomme ich es nicht auf die Reihe die richtig zu implementieren^^
Code:
Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>

#pragma comment(lib, "winmm.lib")

int main()
{
	static const TCHAR* myTitle = TEXT("Passwort-Generator");
	SetConsoleTitle(myTitle);

	char  Buchstaben[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
	std::string Passwort;
	int laenge;
	int erstelle;
	int x = 0;
	srand(timeGetTime());

	std::cout << "Wie lang soll das Passwort werden: ";
	std::cin >> laenge;

	std::cout << "Wie viele Passwoerter sollen erstellt werden: ";
	std::cin >> erstelle;


		for (int i = 0; i < laenge; i++)
		{

			Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];

		}


	std::cout << Passwort << "\n";

	getchar();
	return 0;
}
04/09/2015 23:10 HolySell#4
Quote:
Originally Posted by KingwondA View Post
Danke, hat mir nicht wirklich geholfen. :D
Kam danach ein weiterer Fehler den hab ich selber behoben.

Stehe grad ziemlich auf den schlauch, auch wenn die Lösung einfach sein mag ich komm einfach nicht drauf. xD

Ich möchte nun, dass ich auch angeben kann wie viele Passwörter ich erstellt haben möchte. Da muss definitiv eine Schleife her, nur bekomme ich es nicht auf die Reihe die richtig zu implementieren^^
Code:
Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>

#pragma comment(lib, "winmm.lib")

int main()
{
	static const TCHAR* myTitle = TEXT("Passwort-Generator");
	SetConsoleTitle(myTitle);

	char  Buchstaben[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
	std::string Passwort;
	int laenge;
	int erstelle;
	int x = 0;
	srand(timeGetTime());

	std::cout << "Wie lang soll das Passwort werden: ";
	std::cin >> laenge;

	std::cout << "Wie viele Passwoerter sollen erstellt werden: ";
	std::cin >> erstelle;


		for (int i = 0; i < laenge; i++)
		{

			Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];

		}


	std::cout << Passwort << "\n";

	getchar();
	return 0;
}

Du pflanzt die for-Loop einfach in eine neue Loop.

PHP Code:
    for (int j 0erstellej++)
    {
        for (
int i 0laengei++)
        {

            
Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];

        }
        
//Gib das Passwort aus oder schiebs in ein Array oder mach sonst was damit
    

04/10/2015 00:20 KingwondA#5
Das hatte ich versucht, dass klappt so aber nicht.
Weil das Passwort immer wieder das gleiche ist, nur dass mehr Buchstaben drangehängt werden.
Aus "EE3g7" wird "EE3g7Jd4c7" und immer so weiter, bis die zu erstellende Menge erreicht ist, dabei wird aber die eigentlich Passwort länge überzogen.
04/10/2015 00:23 xinternet#6
setz passwort einfach vor der erstellung auf ""
04/10/2015 00:33 KingwondA#7
Quote:
Originally Posted by xinternet View Post
setz passwort einfach vor der erstellung auf ""
Geht immer noch nicht :(
04/10/2015 00:35 HolySell#8
PHP Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>

#pragma comment(lib, "winmm.lib")

int main()
{
    static const 
TCHARmyTitle TEXT("Passwort-Generator");
    
SetConsoleTitle(myTitle);

    
char  Buchstaben[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
    
std::string Passwort;
    
int laenge;
    
int erstelle;
    
int x 0;
    
srand(timeGetTime());

    
std::cout << "Wie lang soll das Passwort werden: ";
    
std::cin >> laenge;

    
std::cout << "Wie viele Passwoerter sollen erstellt werden: ";
    
std::cin >> erstelle;


    for (
int j 0erstellej++)
    {
        for (
int i 0laengei++)
        {

            
Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];

        }
        
std::cout << Passwort << "\n";
        
Passwort "";
    }



    
getchar();
    return 
0;

So sollte es nun klappen.

Da du immer nur was neues dran hängst sollte nach jedem neuen Passwort die Variable auf "" gesetzt werden.
04/13/2015 02:11 Delinquenz#9
Wieso ist passwort nicht einfach eine lokale Variable der ersten for-Schleife?

C++11 bietet übrigens mit std::random eine tolle Alternative zu rand().
04/13/2015 15:35 KingwondA#10
Quote:
Originally Posted by Delinquenz View Post
Wieso ist passwort nicht einfach eine lokale Variable der ersten for-Schleife?

C++11 bietet übrigens mit std::random eine tolle Alternative zu rand().
höh?
std::random ist mir neu :)
-ist es aber auch besser als srand(timeGetTime());-
Ist doch nicht schlimm, dass "Passwort" keine lokale Variable ist oder?
04/13/2015 15:45 HolySell#11
Quote:
Originally Posted by KingwondA View Post
höh?
std::random ist mir neu :)
-ist es aber auch besser als srand(timeGetTime());-
Ist doch nicht schlimm, dass "Passwort" keine lokale Variable ist oder?
Wenn's ne lokale Variable wäre, müsstest du die Variable nicht nach jedem Durchlauf leeren.
04/13/2015 16:29 KingwondA#12
Quote:
Originally Posted by HolySell View Post
Wenn's ne lokale Variable wäre, müsstest du die Variable nicht nach jedem Durchlauf leeren.
Ist doch wumpe, ob leeren oder lokal halten^^
04/13/2015 20:48 Delinquenz#13
Quote:
Ist doch wumpe, ob leeren oder lokal halten^^
Wozu braucht man schon Scopes, einfach alles global machen!
04/13/2015 21:19 KingwondA#14
Quote:
Originally Posted by Delinquenz View Post
Wozu braucht man schon Scopes, einfach alles global machen!
Ich versteh jetzt nicht was ihr wollt?^^
Das Programm läuft einwandfrei.
Wieso sollte ich dann am Code was ändern bzw. die Variable "Passwort" Global machen.
Nur damit ich die nicht leeren muss?
Wäre für mich kein Grund das zu machen!
04/20/2015 17:07 .SlaP#15
Die Rand function ist schwachsin , benutzt std::random