returnwert verarbeitung was mach ich da falsch?
-
ich hab da so ein kleines Progrämmchen doch das Programm bleibt einfach stehen nach dem ersten int
int main (void){ //Die Retunrwerte werden in Variablen abgespeichert int iInput = getEingabe(iInput); //<--- Hier bleibts stehen int iMax = getMaximum(iMax);
Es gibt aber keinen Fehler oder sonst was aus die Funktion die verwendet wird sieht so aus
int getEingabe(int iInput){ scanf("%i",&iInput); return iInput; }
Also recht simple aber das Programm bleibt immer stehen keine Ahnung wieso könnt ihr mir da weiterhelfen?
-
Erstmal ist es sinnlos, dort einen Parameter anzugeben und zweitens mußt du auch noch den Fall bearbeiten, daß der Nutzer dort irgendwelchen Müll eingegeben hat:
int getEingabe(void) { int eingabe; int test=scanf("%i",&eingabe); if(test!=1) { //Fehlerbehandlung return -1; } else return eingabe; } int main(void) { int iInput=getEingabe(); //... }
(btw, wenn getMaximum() außer dem Parameternamen genauso aussieht, brauchst du dafür keine Extra Funktion)
-
Also recht simple aber das Programm bleibt immer stehen keine Ahnung wieso könnt ihr mir da weiterhelfen?
Vielleicht wartet es auf eine Eingabe?
-
LordJaxom schrieb:
Also recht simple aber das Programm bleibt immer stehen keine Ahnung wieso könnt ihr mir da weiterhelfen?
Vielleicht wartet es auf eine Eingabe?
lol ich bin so ein
jetzt müst es nur noch eine mehtode geben wie ich nur den return wert krieg und nicht gleich einen sichtbaren funktionsaufruf aber sowas geht doch sowieso nicht oder?
-
du kannst natürlich auch sowas schreiben:
int getEingabe() { return 4711; }
Das würde sofort nach Aufruf zurück zum Hauptprogramm springen. scanf() dient dazu, eine Eingabe von Tastatur abzuwarten und auszuwerten - und genau das macht es an der Stelle auch (also wenn das Programm das nächste mal dort stehen bleibt - einfach eine beliebige Zahl eintippen, ENTER drücken und beobachten wie es weiterläuft ;)).
PS: Falls du etwas AUSgeben willst - dazu benötigst du printf()