problem beim einlesen einer datei
-
hallo,
ich habe ein datei mit verschiedenen werten, die untereinander gespeichert sind
etwa so:
7.3
6.9
10.2
12.5
14.3
nun möchte ich die einzelnen werte in ein feld vom typ float einlesenihr mein ansatz
int i, size; float temp[24]; long int pos; FILE *dateizeiger; dateizeiger=fopen("temper.dat","rb"); if (dateizeiger==NULL) printf("\nDatei konnte nicht geoeffnet werden\n\n"); else { size = sizeof(float); for ( i = 0 ; i < 24 ; i++ ) { fgetpos(dateizeiger,&pos); pos = pos / size +1; fread(&temp[i],sizeof(float),1,dateizeiger); printf("Wert: %f \n",temp[i]); } } fclose(dateizeiger);leider funktioniert das aber nicht.
ich hoffe ihr könnt mir helfen
gruß
gus484
-
Hallo
ich würde dir empfehelen mit ifstream zu arbeiten:
std::ifstream FileToReadOut; FileToRead.open("temper.dat");dann kannst du getline benutzen, um die Datei zeielnweise auszulesen.
chrische
-
danke für den tipp aber ich habe es jetzt anderes hinbekommen
int i; float temp[24], t; FILE *dateizeiger; dateizeiger=fopen("temper.dat","r+b"); if (dateizeiger==NULL) printf("\nDatei konnte nicht geoeffnet werden\n\n"); else { for ( i = 0 ; i < 24 ; i++ ) { fscanf(dateizeiger,"%f ",&t); temp[i] = t; cout <<temp[i] <<endl; } } fclose(dateizeiger);
-
Hallo
Du benutzt C und C++ zusammmen (printf,cout,...). Das sollte man wenn möglich vermeiden.
chrische
-
Nö einfach cout.sync_with_stdio() aufrufen
-
Noch eine Anmerkung: fread() erwartet die binäre Darstellung eines float in der Datei und schreibt sie 1 zu 1 in den Speicherbereich deiner float-Variablen. fscanf() erwartet (und parst) die textuelle Darstellung einer Zahl.
(und unter C++ solltest du lieber fstreams nehmen anstelle der FILE*-Funktionen)