Werte aus einer Datei einlesen und speichern
-
hallo,
ich habe ein problem dabei, Zahlenwerte einzulesen und abzuspeichern.
Für mein Programm habe ich eine Eingabedatei, in der die Werte untereinander stehen10 10 50 ...
zB.
Ich muss diese so einlesen, dass jeder Wert in eine Variable gespeichert wird.
(per google finde ich leider nur Programmbeispiele, wo die Werte per printf direkt ausgegeben werden o.Ä.)Die Werte sollen unterschiedliche Datentypen (double /int haben).
Ich bekomme das weder mit fscanf noch mit fgets hin.
Im Moment sieht meine Funktion für das Einlesen zB so aus (eigentlich sind es viel mehr Variablen, aber ich hab das mal gekürzt):
int READ_PARAMETER(char *Inputfile, double xlength, double ylength, int imax) { FILE *input; input = fopen(Inputfile, "r"); if (input == NULL) { printf("Fehler beim Oeffnen der Datei %s\n", "input.txt"); exit(1); } //Lese die Werte aus der Datei fscanf(input, "%lf %lf %i", &xlength, &ylength, &imax); fclose(input); return 0; }
Ich sehe eigentlich nicht so richtig einen Fehler, aber irgendwie kommt dabei Mist raus.
nachdem die werte mit dieser funktion eingelesen wurden, lasse ich sie dann im main-programm zur kontrolle ausgeben, etwa so:READ_PARAMETER("input.txt", xlength, ylength, imax); printf("xlength: %lf \n",&xlength); printf("ylength: %lf \n",&ylength); printf("imax: %i \n",&imax);
Naja als Ausgabe bekomme ich dann
xlength: 10.0000 ylength: 10.0000 imax: 4215008
Aber imax sollte ja 50 sein.
Die Werte, die danach kommen würden, stimmen auch nicht.Habe es auch schon mit fgets probiert, aber das ging auch nicht so recht...
Danke für Hilfe!
-
Sollte es nicht heissen?
int READ_PARAMETER(char *Inputfile, double *xlength, double *ylength, int *imax) /*und*/ fscanf(input, "%lf", xlength); fscanf(input, "%lf", ylength); fscanf(input, "%i", imax);
da diese doch wohl herausgelesen werden sollen?
Ausserdem solltest scanf auf seinen Rueckgabewert checken.
if (fscanf(input, "%lf", xlength) != 1) fprintf (stderr, "Schief gelaufen!\n");