Feldinhalt auslesen



  • Hallo,
    ich schreibe gerade ein Programm, welches dem Benutzer erlaubt Eingaben in mehrere Felder zu hinterlegen.

    //############# Funktion Eingabe START ############
    void eingabe (float wid_reihe[], int groesse)
    {
    	int i;
    	float wert;
    	int check_eingabe;
    
    	for (i=0; i <= groesse-1; i++)
    	{
    		do {
    			printf("\nGeben Sie den %i.ten Widerstandswert ein: ", i+1);
    			fflush (stdin); 
    			check_eingabe=scanf("%f", &wert);
    
    			if (check_eingabe==0)
    			{
    				printf("Falsche Eingabe!");
    			}
    		}while (check_eingabe==0);
    		wid_reihe[i] = wert;
    	}
    }
    //############# Funktion Eingabe ENDE ############
    

    So im umkehrschluss möchte ich nun die Feldelemente wieder auslesen lassen, bloß weiß ich leider nicht wie ich das machen soll, bis hierhin bin ich gekommen:

    printf("\nWelches Feldelement wollen Sie sich ansehen?\n");
    			printf("Sie k%cnnen 1 von %i Feldelemente ausw%chlen." ,148,groesse,132);
    			printf("\nIhre Eingabe:");
    			fflush(stdin);
    			scanf("%i" ,&eingabe);
    

    Irgendwie habe ich eine Denkblockade wie ich weiter vorgehen soll aber vielleicht hat ja einer von euch eine Hilfe für mich.
    Vielen Dank im vorraus;)



  • Versuch's mal mit printf("%f",wid_reihe[eingabe-1]); (eventuell mit einer Sicherheitsabfrage, ob du im erlaubten Indexbereich bist).

    PS: Für "fflush(stdin);" gehörst du eigentlich gesteinigt und auf den Mond geschossen.



  • CStoll schrieb:

    Versuch's mal mit printf("%f",wid_reihe[eingabe-1]); (eventuell mit einer Sicherheitsabfrage, ob du im erlaubten Indexbereich bist).

    PS: Für "fflush(stdin);" gehörst du eigentlich gesteinigt und auf den Mond geschossen.

    Das fflush(stdin) wird mir aber so in der Schule beigebracht und ist doch dafür da um den Tastaturbuffer zu leeren und bisher öfter mal sinnvoll gewesen, zumindest bei meinen Programmen;) Was wäre denn eine bessere alternative und warum sollte man es nicht benutzen?

    Mit ("%f",wid_reihe[eingabe-1]); hat es funktioniert vielen Dank an dich, war ja doch so einfach, ergo nur eine kleine denkblockade am morgen, bin dir zu dank verpflichtet.



  • XuRaX:) schrieb:

    CStoll schrieb:

    Versuch's mal mit printf("%f",wid_reihe[eingabe-1]); (eventuell mit einer Sicherheitsabfrage, ob du im erlaubten Indexbereich bist).

    PS: Für "fflush(stdin);" gehörst du eigentlich gesteinigt und auf den Mond geschossen.

    Das fflush(stdin) wird mir aber so in der Schule beigebracht und ist doch dafür da um den Tastaturbuffer zu leeren und bisher öfter mal sinnvoll gewesen, zumindest bei meinen Programmen;) Was wäre denn eine bessere alternative und warum sollte man es nicht benutzen?

    In dem Fall gehört dein Lehrer wohl gesteinigt. fflush() leert nach ANSI-Standard den Ausgabepuffer eines FILE's, was bei einem reinen Eingabe-FILE (wie stdin) passieren soll, ist undefiniert - MS gehört zu den wenigen Compilern, die in dem Fall den Eingabepuffer auskippen. Eine saubere Lösung dafür lautet:

    void ignore(FILE* in)
    { while(!feof(in) && fgetc(in)!='\n'); }
    
    ...
    ignore(stdin);
    ...
    


  • ach interessant vielen dank für den tipp von dir;)


Anmelden zum Antworten