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 einlesen

    ihr 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)


Anmelden zum Antworten