Announcement

Collapse
No announcement yet.

Re: Fwrite-Befehl

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Re: Fwrite-Befehl

    Hallo,
    habe folgene code geschrieben aber ich kann keine float werte
    (stelle: Kunde.code = 42.45) in die Datei schreiben, sogar wenn ich code als interger deklariere, wird nur Ascii code in die Datei gespeichert. ich weiß nicht,
    wie ich realisieren kann???

    struct {

    char name[20];
    char ort[20];
    float code;

    } kunde;

    void testkunde(void)
    {
    FILE *f1;
    if ((f1=fopen("t1.txt","w"))==NULL) {
    fprintf(stderr,"Fehler beim Öffnen der Datei\n");
    exit(1);
    }

    strcpy(kunde.name,"\nMüller, Halter");
    strcpy(kunde.ort,"3000 Hannover");
    kunde.code=42.45;
    for (i=1; i<=10; i++) {
    if (fwrite(&kunde,sizeof(kunde),1,f1)!=1) {
    fprintf(stderr,"Fehler beim Schreiben der Datei\n");
    exit(1);
    }
    }
    fclose(f1);

    }


    MFG

    mmx2009

  • #2
    Wozu die Schleife? Erstmal mit 1x schreiben probieren. Was für ein Fehler tritt auf?
    Mal mit einem Hex-Editor in die Datei gesehen? Hat sie die richtige Größe?
    Christian

    Comment


    • #3
      Hallo,

      Wenn ich Z.B code als Integer definiere mit ein Wert von 49(Kunde.code=49), sehe Ich als Ausganswert in meiner Datei den Wert 1 (in Ascii Tabelle steht Deziaml:49=1), d.h es wird immer der Ascii-code ausgegeben. Ich möchte eigentlich den Wert 49 in meiner Datei sehen.

      MFG

      mmx2009

      Hallo nochmal,

      habe vergessen zu sagen, daß Ich keine Fehlermeldung habe, wenn Ich das Programm laufen lasse. Es wird nur falsche Zahl in meiner Datei gespeichert
      (nur Ascii-code 49Dezimal=1, siehe bitte die Ascii-Tabelle )

      MFG

      mmx2009
      Zuletzt editiert von Christian Marquardt; 09.02.2009, 14:07. Reason: Beiträge zusammengeführt

      Comment


      • #4
        Dir ist aber bewusst, dass du für den float KEINEN AscII Wert in die Datei geschrieben bekommst?

        D.h. für einen 32 bit float werden 4 Bytes (sizeof(float)) geschrieben.

        Deine Datei sollte dann also 44 Byte groß sein.

        Du schreibst binär 44 Bytes ab der Adresse kunde.

        Ich möchte eigentlich den Wert 49 in meiner Datei sehen.
        Das wird so nicht gehen. Das ist nicht Sinn von fwrite.
        Christian

        Comment


        • #5
          Re:Fwrite

          Hallo,

          wie kann Ich Deine Meinung nach diese kleine Aufgabe realisieren? d.h(Kunden.Vornamen, Nachnamen und (code in float) in eine Datei speichern)

          Gruß

          mmx2009

          Comment


          • #6
            Wieso?? Der float wird doch geschrieben und kann auch wieder gelesen werden, also alles ok
            Christian

            Comment


            • #7
              das ist das Problem, bei mir wird float oder Integer-Wert nicht richtig in Datei geschrieben, wie Ich vorher sagte, funktiort nicht, Du kannst die C-Code, was Ich da eingegeben habe, selbst ausprobieren, Die Ausgabewerte sind nicht
              korrekt.

              Comment


              • #8
                Was für Ausgabewerte?

                wie Ich vorher sagte, funktiort nicht,
                Siehe Beitrag 4, sicherlich ist die Ausgabe korrekt

                Mit fwrite/fread könne die Daten geschrieben und gelesen werden. Ob du das dabei als ASCII lesen kannst spielt dabei keine Rolle.

                Wenn du speziell eine ASCII Datei erzeugen willst kannst du nicht binär arbeiten. Dann wandel ggf. den float in einen char[] um oder nutze http://www.cplusplus.com/reference/c...o/fprintf.html
                oder andere Methoden
                Zuletzt editiert von Christian Marquardt; 10.02.2009, 10:27.
                Christian

                Comment


                • #9
                  Hallo Christian,

                  danke.


                  MFG

                  mmx2009

                  Comment

                  Working...
                  X