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()


Anmelden zum Antworten