fwrite



  • hi C++ Community!
    ich habe ein kleines Programm geschrieben und bin da auf ein komisches phänomen gestossen:
    wenn man ber "fwrite" daten in eine datei schreibt, gibt es einen komischen fehler:

    #include <iostream>
    
    int main ()
    {
    	FILE *File = NULL;
    	int iTest1 = 0x61;
    	int iTest2 = 0x62;
    
    	File = fopen ("test.txt", "w");
    
    	fwrite (&iTest1, sizeof (iTest1), 1, File);
    	fflush (File);
    
    	fclose (File);
    
    	File = fopen ("test2.txt", "w");
    
    	fwrite (&iTest1, sizeof (iTest1), 1, File);
    	fwrite (&iTest2, sizeof (iTest1), 1, File);
    	fflush (File);
    
    	fclose (File);
    
    	return 0;
    }
    

    beim ersten fwrite werden jetzt nur 2 bytes geschrieben, aber wenn man danach noch mal einen integer schreibt, wird alles normal geschrieben...
    weiß jemand woran das liegen könnte?
    bin dankbar für alle vorschläge 🙂

    mfg DaDrivel


  • Administrator

    Also erstens hat das nichts mit C++ oder MFC zu tun, sondern ist C. Hat also in diesem Forum nichts verloren.
    Zweitens habe ich genau diesen Code, den du hier gepostet hast, kopiert und getestet. In test.txt sind 4 Bytes drin und in test2.txt sind 8 Bytes drin.
    Wo ist also dein Problem?

    Grüssli



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Naja der header ist jedenfalls C++ iostream.



  • #include <stdio.h>

    fopen(..., "wb");
    fopen(..., "rb");



  • ok, sorry, man kann sich ja mal irren. ich wusste nicht, dass die iostream zu den standard C-bibliotheken gehört.
    zu meinem problem:
    ich habe mir die text-dateien mit dem notepad angeschaut, und da wurden immer nur zwei bytes abgezeigt, was wahrscheinlich daran lag, dass es den asc-code 0 nicht anzeigen kann. ich bin blöderweise auch ncith auf die idee gekommen, mal auf die größe der datei zu schauen.
    habs mit jetzt dann auch noch mal mit ned hex-viewer angezeigt, und es hat alles geklappt...
    also, sorry... hab mich vertan

    mfg DaDrivel



  • du solltest TROTZDEM binaerdateien mit dem "b" flag oeffnen



  • c.rackwitz schrieb:

    du solltest TROTZDEM binaerdateien mit dem "b" flag oeffnen

    Das gilt eigentlich nur auf nicht-Unix/Linux-Systemen. Auf Unix/Linux-Systemen schadet es zwar nichts:

    the ``b'' is ignored on all POSIX conforming systems, including Linux.

    und macht nur Sinn, wenn man Portierungen auf andere Systeme vorhat. Ich habe das jedenfalls im Unix/Linux-Umfeld noch nie benötigt.



  • und das geht so lange gut, bis ein anfaenger das auf ner winbox kompilieren will...


Anmelden zum Antworten