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 Fehlerruntime error R6002
- floating point not loadedgewesen 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 loadedbedeutet, 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