fputc() schreibt mehr als es soll ??



  • Hallo,

    ich habe folgenden Codebereich um Werte in eine datei zu schreiben, nur
    schreibt er wohl mehr rein als er soll, aber auch nur wenn die Werte
    relativ unterschiedlich sind, würden sie auf z.B. 3 Stehen klappt es
    Wunderbar und die datei ist 487 Byte groß, sind sie gemischt Unterschidlich
    schreibt er mehr, so 490-493 je nach dem. Die Werte überschreiten niergends
    255, im Gegenteil max. Wert ist 14.

    Kann mir da jemand Helfen?? 🙄

    PS: Ich habe ein int count++ mit rein gemacht um zu Prüfen wie oft die
    fputc() aufgerufen wurde, und das ist exakt 487 aber 493 Bytes wurden geschrieben.

    Der Code:

    // int Tiles[n][n] ist Global, int endX, endY auch    
          int X,Y;
          int count = 0;  // mein Test um zu Zählen nach jedem fputc
          char out;
          FILE * pFile;
          pFile = fopen ("Level1Tilesmap.map, "w");
          if (pFile != NULL) {
                    out = 'T';
                    fputc(out,pFile);
    
                    count++;
    
                    out = 'M';
                    fputc(out,pFile);
    
                    count++;
    
                    out = 'A';
                    fputc(out,pFile);
    
                    count++;
    
                    out = 'P';
                    fputc(out,pFile);
    
                    count++;
    
                    out = char(TileSize);
                    fputc(out,pFile);
    
                    count++;
    
                    out = char(endX);
                    fputc(out,pFile);
    
                    count++;
    
                    out = char(endY);
                    fputc(out,pFile);
    
                    count++;
    
                    for (Y=0;Y<endY;Y++) {    //endY = 16
                            for (X=0;X<endX;X++) {   //endX = 30
                                    out = char(Tiles[X][Y]);
                                    fputc(out,pFile);
    
                                    count++;
                            }
                    }
                    fclose (pFile);                
            }
    
            // in count steht nun 487, wie es sein soll
    


  • Ich habe mein "Flüchtigkeits-" Fehler selbst gefunden, da ich vorerst nur
    Zeichen nehmen wollte (a-zA-Z) hatte zum öffnen der Datei nur "w" genommen
    und hatte vergessen das b ("wb") drann zu hängen für Binarymode.

    Jetzt geht es auf jeden Fall 🙂

    Merkwürdig ist es aber denoch das er ab un an Werte doppelt schreibt!

    Off_Topic->Start();
    Das Forum sollte mal den Provider wechseln, mehr Ausfälle als sonst was,
    98% Ereichbarkeit kann man annehmen, aber nicht 63% 👎
    Off_Topic->Ende();


Anmelden zum Antworten