Eingabe von Strukturvariablen in ein Strukturarray durch eine Funktion



  • Hallo!

    Und zwar geht es um folgendes Problem:

    Der Compiler zeigt mir keine Fehlermeldung,
    aber wenn ich das Programm ausführe kommt es bei der
    Eingabe der 1.Untervariable des Wert double(die bei .value)
    zu einem Laufzeitfehler. Das ganze funktioniert wenn ich es
    auf int umschreiben würde.

    Woran kann das liegen?

    Funktionsaufruf:

    iAnzahl=eingabe(Sensor_feld);
    

    Funktion:

    int eingabe(struct Sensor *p_sPointer)
    {
    int index;
    int iwieviel;
    
    printf("Wieviele Sensoren moechten sie speichern: \n");
    scanf("%d",&iwieviel);
    
    for(index=0;index<iwieviel;index++)
    {
    printf("\n\n\nGeben Sie bitte den Namen des Sensors ein:");
    scanf("%s",p_sPointer[index].name);
    
    printf("\nType:");
    scanf("%d",&p_sPointer[index].type);
    
    printf("\nValue:");
    scanf("%lf",&p_sPointer[index].value);
    
    printf("\nError:");
    scanf("%lf",&p_sPointer[index].error);
    
    printf("\nQualität:");
    scanf("%s",p_sPointer[index].quality );
    
    }
    

    Definition der Struktur+Strukturvariable:

    struct Sensor
    {
    char name[6];
    int type;
    double value;
    double error;
    char quality[3];
    
    }Sensor_feld[100];
    


  • Dein Struct scheint mir global zu sein, eine Übergabe an die Funktion ist nicht notwendig.

    Mache

    int eingabe(void);
    

    und

    scanf("%s",Sensor_feld[index].name);
    

    dann sollte es gehen.

    Achja, deine eingabe-Funktion liefert nichts zurück und die schließende } fehlt.



  • Ja die Struktur ist global!
    Verstehe es das ich es nicht übergeben muss, aber mein Buch macht
    es genauso-keine Ahnung warum!

    Aber index liefert die Anzahl der gespeicherten Strukturen
    zurück damit ich dann bei der Ausgabe weiß wieviel ich ausgeben
    und anschließend speichern muss!

    Aber warum funkt das nur bei double-Werten nicht und liefert
    wenn ich die double Werte als int Werte austausche keinen
    Laufzeitfehler???



  • Anzi-C schrieb:

    dann sollte es gehen.

    nein.

    Anzi-C schrieb:

    Achja, deine eingabe-Funktion liefert nichts zurück und die schließende } fehlt.

    ich schätze 'mal, er hat sie nur beim Copy & Paste vergessen.

    @Mini198223:
    Es wäre nett gewesen, wenn du uns verraten hättest, daß der Fehler

    runtime error R6002
    - floating point not loaded

    gewesen ist.

    Mach in deiner main( ) ganz am Anfang:

    Sensor_feld[0].value = 0.0;
    

    dann flutscht's.

    Greetz, Swordfish



  • nein.

    Warum sollte es nicht funktionieren? Außerdem verstehe ich nicht warum man eine globale Struktur an eine Funktion übergibt!



  • Bei mir funktioniert es:
    Man muss eingeben:

    Sensor_feld[0].value = 0.0;
    

    War glaub ich ein Tippfehler!

    Und was ist da eingentlich schief gelaufen?

    Danke!



  • Mini198223 schrieb:

    War glaub ich ein Tippfehler!"

    Jup, ist auch schon geändert.

    Mini198223 schrieb:

    Und was ist da eingentlich schief gelaufen?

    sag' mal, ließt du keine Fehlermeldungen?

    Swordfish schrieb:

    runtime error R6002
    - floating point not loaded

    bedeutet, dass, nachdem du offensichtlich keine Fließkommaoperationen durchgeführt hast, die Unterstützung dafür vom Compiler auch nicht geladen wurde. Der Compiler schaut leider nicht in den Formatstring deines scanf() wo er bei "%lf" erkennen könnte, dass du Fließkommaunterstützung brauchst.

    Anzi-C schrieb:

    Warum sollte es nicht funktionieren? Außerdem verstehe ich nicht warum man eine globale Struktur an eine Funktion übergibt!

    Weil dadurch floating-point-support immer noch nicht geladen wird.

    Greetz, Swordfish



  • Da hast recht, lese keine Fehlermeldungen 😞
    Weiß eigentlich auch nicht warum
    .

    @swordfish+Anzi-C: Danke!!!

    mfg
    Mini



  • dann bezweifle ich leider den Erfolg deiner Programmiererkariere...

    Greetz, Swordfish


Anmelden zum Antworten