Passwort in Sternchen ausgeben lassen

toastie

Mitglied
Hallo liebes Forum,

Ich habe eine Frage bezüglich C++.

Und zwar:

Code:
#include<iostream>
using namespace std;

int main()
{
    int i;
    i=6;
    do
    {
         cout<<"Zahl eingeben\n";
         cin>>i;
         if (i!=6)
         {
                  cout<<"Falsche Zahl\n";
         }
         else if(i==6)
         {
              cout<<"Richtig!\n";
         }
    }
    while(i!=6);
    system("PAUSE");
}

dort möchte ich, dass wenn man die Zahl eintippt, sie in einem Sternchen angezeigt wird wie bei vielen Passwortabfragen.

Ich hoffe ihr könnt mir helfen:)

Danke im Vorraus

MfG

Thomas
 
Ich stand auch einmal vor dem Problem und habe auch hier nach gefragt.
Und hinter her kamen wir dann auf etwa das:
C++:
void passwort_stern( string wiedergabe, string & pass)
{
  char temp;
  char passwort[10];
  char passwort_1[10];
  int index = 0;
  int zaehler = 0;

  while ( ( temp = _getch() ) != 13 )
  {
    if ( temp == VK_BACK )
    {
      /////////ausgabe manipulieren////////////////
      system( "cls" );
      cout << wiedergabe;
      for ( int q = 0; q < zaehler - 1; ++q )
      {
        cout << "*";
      }
      zaehler -= 1;
      if ( zaehler < 0 ) zaehler = 0;
      ////////////////variablen aendern/////////////////
      passwort[zaehler - 1];
      for ( int q = 0; q < zaehler; ++q )
      {
        passwort_1[q] = passwort[q];
      }
      passwort[zaehler] = '\0';
      for ( int q = 0; q < zaehler; ++q )
      {
        passwort[q] = passwort_1[q];
      }

      index -= 1;
    }
    else
    {
      cout << "*";
      passwort[index++] = temp;
      passwort[index] = '\0';
      zaehler += 1;
    }
  }
  pass = passwort;
}
Der If-Block mit dem VK_BACK ist nicht unbediengt von nöten.
Der bewirkt nur, dass wenn du einen Buchstaben löschen willst, dass dann nicht noch ein Stern kommt.
Ich hoffe ich konnte helfen.
mfg
 
Zuletzt bearbeitet:
Ich stand auch einmal vor dem Problem und habe auch hier nach gefragt.
Und hinter her kamen wir dann auf etwa das:
[…]
Dir ist aber hoffentlich klar, dass man diese Funktion in der Form keinesfalls im Produktivbetrieb verwenden sollte. Mit dieser Implementierung lässt sich leicht ein Pufferüberlauf provozieren, der im besten Fall in einem Programmabsturz endet – im schlimmsten Fall kann ein Angreifer damit nahezu beliebigen Code in dein Programm einschleusen und ausführen.

Grüße,
Matthias
 
Passwort in Sternchen

Hi

Ich habe jetzt den C++-Code:

Code:
#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>

using namespace std;


int main()
{
    std::string passwort("hallo");
    std::string benutzername("admin");
    
    cout<<"Bitte Benutzernamen und Passwort eingeben\n";
    cout<<"Benutzername: "; cin>>benutzername;
    cout<<"Passwort: "; cin>>passwort;
    
    
    while((passwort = getch())!="hallo")
    {
                    cout<<"*";
    }
     
    if(passwort=="hallo")
                    {
                                           cout<<"richtig";
                                           Sleep(2000);
                    }
                                      
}

Ich weiß, dass ich das Passwort mit getch() in Sterchen ausgeben lassen kann.

Ich verstehe auch den Zusammenhang und wie es mit getch() zusammenhängt. Das einzige, was ich brauche, ist eine passende Bedingung, die ich in die while-Schleife einbauen kann, um anstatt des Passwortes Sternchen auszugeben. Die while-Schleife in diesem Code funktioniert nicht. Ich habe den Code nur gepostet, damit ihr euch ein Bild machen könnt, wie mein Skript ungefähr aussieht. Wäre über Hilfe sehr dankbar. Bitte bei missverständnissen o. ä. mich fragen.

Im Vorraus schonmal danke:)

MfG

Thomas
 
Zuletzt bearbeitet:
Das einzige das du falsch gemacht hast ist, dass du
Code:
while((passwort = getch())!="hallo")
mit einem = geschrieben hast.. es gehört aber ein += dort hin:
Code:
while((passwort += getch())!="hallo")
Das hat bei mir funktioniert...
Ich gebe hallo ein und es kommen nur sternchen... wenn ich hallo geschrieben habe erscheint "richtig" :D
Hoffe ich konnte dir helfen,
Daniel0108
 
Zurück