Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Newbie Mini JLI'ler
Anmeldedatum: 08.03.2004 Beiträge: 2
Medaillen: Keine
|
Verfasst am: 08.03.2004, 13:26 Titel: Probleme mit Eingabe |
|
|
Hallo zusammen,
ich habe ein kleines Problem mit einem Progamm, wo ich grad mal so zur Übung gemacht habe.
Quelltext:
// Funktionen Übung
#include <iostream.h>
char x;
char y[10];
void Eingabe1(void);
void main(void)
{
cout << "Das Programm wird nun gestartet.\n\n";
cout << "Wollen Sie fortsetzen? J/N\n";
cin >> x;
if(x == 'j')
{
cout << "Okay\n";
Eingabe1();
}
else
{
cout << "Okay, das Programm wird nun beendet.\n";
}
}
void Eingabe1(void)
{
cout << "Bitte geben Sie nun Ihr Passwort ein:\n";
cin >> y;
if(y == "Schlaufux")
{
cout <<"Korrekt.\n";
}
else
{
cout <<"Ihr Passwort ist leider falsch, wiederholen Sie den Vorgang.\n";
}
}
So, das Problem beginnt jetzt mit der Passworteingabe. Oben bei J/N geht es problemlos und es springt dann auch richtig zur Funktion. In der Funktion aber nimmt es das Passwort "Schlaufux" nicht und meldet immer falsches Passwort. Habe ich irgendwas falsch gemacht (bzw. das was falsch ist ist klar, aber was)? Ich komm echt nicht dahinter..., mit nem "normalen" char (also ein Zeichen" geht es wieder... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 08.03.2004, 13:38 Titel: |
|
|
versuchs mal mit string y anstatt den char[]. Oder benutze strcmp zum vergleichen von Strings. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 08.03.2004, 13:57 Titel: |
|
|
Du kannst char[] nicht mit == auf Gleichheit prüfen.
Mit
char y[10] erzeugst du ein Array und reservierst Speicher für 10 char. Der Arrayname y ist genau genommen ein Pointer auf die Anfangsadresse des reservierten Speicherbereiches, was du mit
cout << y << " " << &y[0] << endl;
nachprüfen kannst.
Wenn p1 und p2 zwei Pointer sind, dann kannst du mit p1 == p2 feststellen, ob beide Pointer auf denselben Speicherbereich zeigen. Mit y == "schlaufux" prüfst du, ob y auf den Speicherbereich zeigt, wo die Konstante "schlaufux" gespeichert ist. Das wird niemals der Fall sein.
Was du willst, ist die Funktion "strcmp()". Hiermit kannst du zwei char[] mit strcmp(y,"schlaufux") auf Glerichheit überprüfen.
Allerdings empfehle ich dir, die Finger von char[] zu lassen und stattdessen den STL-string zu benutzen.
Dazu brauchst du die Header-Datei <string>, dann kannst du recht einfach mit STrings arbeiten:
string meinString = "blabgla"
if (meinSTring = "blafasel") {...}
Übrigens: <iostream.h> ist veraltet, man sollte <iostream> (also ohne .h) benutzen. Dann fürst du noch die Zeile
using namespace std;
ein, diese benötigst du auch für die strings.
viele Grüße
Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 08.03.2004, 14:13 Titel: |
|
|
bei strcmp muss man aber soweit ich weiß noch aufpassen weil die funktion nicht true sondern false zurückgibt wenn die strings gleich sind. |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 08.03.2004, 14:22 Titel: |
|
|
War es nicht -1 wenn der erste Parameter lexikographisch kleiner ist, 0 bei Gleichheit und 1, wenn der erste Parameter lexikogr. größer ist?
Oder war das jetzt in Java?
cu Felix
PS: aber das sind Probleme, die sich durch einfaches Ausprobieren schnell lösen lassen _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 08.03.2004, 15:10 Titel: |
|
|
Ja, so müsste das sein.
PS: ausprobieren oder MSDN |
|
Nach oben |
|
|
Newbie Mini JLI'ler
Anmeldedatum: 08.03.2004 Beiträge: 2
Medaillen: Keine
|
Verfasst am: 08.03.2004, 15:37 Titel: |
|
|
@HotAcid
Vielen Dank, jetzt klappt die Sache wunderbar! |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 08.03.2004, 15:39 Titel: |
|
|
gern geschehen _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
|