fprintf & fscanf



  • hallo,
    ich schreibe eine Datei mit folgenden Code

    fprintf (ptr,"\n-------------------------------------------------------\n");
    fprintf (ptr, "\Name \t\t %-10.10s\n",hilf->neu.Name);
    fprintf (ptr, " Beschreibung\t %s\n",hilf->neu.Beschreibung);
    fprintf (ptr, " Verbrauch\t %5.2f\n",kopf->neu.Verbrauch);
    fprintf (ptr, " Stunden\t %2.2f\n",hilf->neu.Stunden);
    fprintf (ptr, " Tage\t\t %3.0f\n",hilf->neu.Tage);

    jetzt möchte ich die daten die ich in die Datei geschrieben habe, beim laden wieder auslesen, leider funktioniert das nicht so wie ich mir das vorgestellt habe :

    fscanf (ptr,"\n-------------------------------------------------------\n");
    fscanf (ptr, "\Name \t\t %-10.10s\n",&neu.Name);
    fscanf (ptr, " Beschreibung\t %s\n",&neu.Beschreibung);
    fscanf (ptr, " Verbrauch\t %5.2f\n",&neu.Verbrauch);
    fscanf (ptr, " Stunden\t %2.2f\n",&neu.Stunden);
    fscanf (ptr, " Tage\t\t %3.0f\n",&neu.Tage);

    ..... warum ist das falsch ?

    Die datei soll lesbar sein, deswegen die Beschrebungen :Name, Beschreibung ,..
    (bzw. die Datei soll ausgedruckt werden.)

    wie lese ich die Daten wieder richtig zurück ?
    Tipps ?
    Danke
    Chris



  • Hi,

    ich glaub du musst den File-Pointer wieder auf null machen, um neu (vom anfang an) einzulesen.
    Bitte erschlag mich jetzt nicht, es ist 6 Jahre her wo ich das letzte mal
    mit reinem C-programmiert habe.
    (lese Bitte in der BCB hilfe wie file-pointer wider auf anfangsposition).

    Grüsse



  • Hallo

    besser wärs aber, gleich die ordentlichen C++ Mittel wie std::fstream oder die VCL-Mittel wie TStringList zu benutzen.
    Zu beiden findest du in den entsprechenden FAQ genug, dazu noch die SuFu.

    bis bald
    akari



  • hmm, ich hab da trotzdem irgendwie ein verständnissproblem undzwar wenn ich in eine Datei wie fogt schreibe :

    cout << "Preis" << variable_x << endl;

    wie lese ich die variable_x wieder aus ? ....

    cin >> vairable_x;

    aber was passiert mit "Preis" ?? .....

    oder so ?
    cin >> "Preis" >> variable_x >> endl;

    ? ... sorry, aber da hab ich grad ein denkproblem ....

    chris



  • Mach einfach mal ein Leerzeichen zwischen String und Zahl, dan klappt das auch.

    ofstream out("text.txt");
    out << "Preis " << variable_x << endl; // Leerzeichen zur Trennung rein
    //wie lese ich die variable_x wieder aus ? .... So
    ifstream in("text.txt");
    string dummy;
    in >> dummy >> variable_x;
    

    Hast du den Beitrag aus der FAQ des C++Forums gelesen?



  • hallo,
    danke für die Antwort.
    Ich habe zu fscanf im C++ Builder FAQ gesucht,
    werde jetz aber im C++ FAQ den Beitrag zu fstream suchen.
    Danke
    Chris



  • Bittet so wird euch gegeben, suchet so werdet ihr finden.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html


Anmelden zum Antworten