Programm braucht immer doppelte eingabe obwohl nur eine abfrage abgefragt wird
-
Hallo ich hab 2 Datein wenn ich jetzt bei der kunden.h bin dann wird hier ja abgefragt was man tun möchte, Profil Anschauen oder bearbeiten.
cout<<"(1) Kunden Profil anschauen: \n" "(2) Kunden bearbeiten \n" "Auswahl: "; cin>>auswahl_kunden_funktion; if (auswahl_kunden_funktion == 1) { return kunden_profile = true; }Wenn ich hier jetzt eine 1 für Profil anschauen eingebe dann blinkt die Console kurz auf, und dann kommt wieder die selbe abfrage.
Nach dem ich dann wieder die 1 eingeben habe funktioniert es.
Woran liegt das ?
Hat da wer vielleicht eine ahnung ?
main cpp
#include <iostream> #include <fstream> using namespace std; #include "kunden.h" int main() { int auswahl; int kunden(bool kunden_profile); bool kunden_profile; cout<<"Datenbank \n\n"; cout<<"(1) Kunden \n" "(2) Telefonbuch \n\n" "Auswahl: "; cin>>auswahl; if (auswahl==1) { cout<<"\n"; kunden(0); } if (kunden(0) == true) { cout<<"profile sind true\n"; } return 0; }#include "kunden.h"
#include <iostream> using namespace std; int kunden(bool kunden_profile) { int auswahl_kunden_funktion; char *kunden_daten = "kunden.txt"; string zeilen[256]; ifstream datei; datei.open(kunden_daten); for (int i=0 ; i<20 ; i++) { datei >> zeilen[i] ; } datei.close(); for (int i=0 ; i<20 ; i++) { cout<<"Zeile"<<": "<<zeilen[i]<<"\n\n"; } cout<<"\n"; cout<<"(1) Kunden Profil anschauen: \n" "(2) Kunden bearbeiten \n" "Auswahl: "; cin>>auswahl_kunden_funktion; if (auswahl_kunden_funktion == 1) { return kunden_profile = true; } return 0; }
-
könnte es vielelicht daran liegen, dass du die funktion zwei mal aufrufst?
-
Ähm ja -.-
Stimmt....
Ich sitz schon wieder zu lange vor dem Kasten ....
-
Aber wieso wird das da 2 mal aufgerufen o_O
Ich ruf die Funktion doch nur 1 mal hier auf ?
Ich nehme mal an der springt dann immer wieder hier her:
if (auswahl==1) { cout<<"\n"; kunden(); }Aber wieso und wie kann ich das vermeiden ??
-
In jedem Ausdruck, in dem du einen Funktionsaufruf schreibst, wird die Funktion auch aufgerufen, sofern dieser Ausdruck ausgewertet wird. Das bedeutet, ob es nun bei
coutoder innerhalb einerif-Klammer steht, ist egal für den Aufruf.Verhindern könntest du das, indem du den Rückgabewert der Funktion in einer Variable speicherst und von da an mit dieser Variable arbeitest.