• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

c++ programmieren hilfe

Red-Rat1

Stille/r Leser/in
Mitglied seit
12.08.2004
Beiträge
17
Reaktionspunkte
0
HI

i lerne c++ noch nicht lange und muss für die schule eine kleine aufgabe machen!!
ich haben den quelltext geschrieben wenn ich ihn bei Microsoft Visual C++ 6.0
konntrolieren lasse schreibt mir das programm 0 Fehler und 0 Warnungen

jedoch wenn ich den Benutzernamen schreibe dann schreibt mir, dass programm gleich, dass ich den Benutzernamen oder das Passwort falsch habe, obwohl der benutzername richtig ist und das Programm bricht ab.


Das is der Quellcode:

#include <iostream.h>
#include <string.h>

char benutzer[50];
char passwort[50];
char benutzer1[]="Benutzer";
char passwort1[]="Passwort123";
int result;
int result1;

int main()
{
cout<<"Geben Sie ihren Benutzernamen ein\\n";
cin.get(benutzer,49);
cout<<"Geben Sie ihr Passwort ein\\n";
cin.get(passwort,49);

result=strcmp(benutzer,benutzer1);
result1=strcmp(passwort,passwort1);

if ((result==0)&(result1==0))
{
cout<<"Sie sind eingeloggt\\n";

}
else {
cout<<"Benutzername oder Passwort falsch\\n";
}

return 0;

}



Bitte um Hilfe
DANKE
 
Hi! Es ist zwar ein leicht modifizierter aufbau, aber es funktioniert:

#include <iostream.h>
#include <string.h>

void main()
{
char benutzer[50];
char passwort[50];
char benutzer1[]="Benutzer";
char passwort1[]="Passwort123";
int result, result1;

cout<<"Geben Sie ihren Benutzernamen ein: ";
cin>>benutzer;
cout<<"Geben Sie ihr Passwort ein: ";
cin>>passwort;

result=strcmp(benutzer,benutzer1);
result1=strcmp(passwort,passwort1);

if ((result==0)&&(result1==0))
cout<<"\\nSie sind eingeloggt";
else
cout<<"\\nBenutzername oder Passwort falsch";
}
 
das Problem ist, daß Dein zweites cin.get(...) das Newline der vorherigen Eingabe liefert. Versuche es mal so:

cout<<"Geben Sie ihren Benutzernamen ein\\n";
cin.get(benutzer,49);
cin.ignore(80,'\n'); // newline überspringen
cout<<"Geben Sie ihr Passwort ein\\n";
cin.get(passwort,49);
cin.ignore(80,'\n'); // newline überspringen, falls noch weitere Eingaben folgen

übrigens: & und && sind in diesem Fall gleichbedeutend. & liefert das Resultat des binäre AND, && einen booleschen Wert

EDIT: @codename: ups, Überschneidung ;) ist eine unsichere Variante, da es zu einem segfault führen kann wegen der fehlenden Angabe der Maximallänge
 
Zurück