störrische fallende Wagenrückläufe in C?

Ich möchte in der Lage sein, eine Windows-Textdatei einzulesen, sie im Speicher zu ändern und dann die alte Datei mit den geänderten Daten zu überschreiben. Fread scheint jedoch die in meiner Windows-Textdatei enthaltenen Zeilenumbrüche nicht zu speichern, was beim Überschreiben der alten Daten zu Problemen führt. Ich kann niemanden finden, der dieses Problem zu haben scheint.

Hier ist ein Beispielcode, der das Problem veranschaulicht:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE* textFile;
    long fileSize;
    char fileCharacterBuffer[100];

    int i;
    for(i = 0; i < 100; i++)
    {
        fileCharacterBuffer[i] = '\0';
    }

    textFile = fopen("./Test.txt", "r+");

    fseek(textFile, 0L, SEEK_END);
    fileSize = ftell(textFile);
    fseek(textFile, 0L, SEEK_SET);

    fread(fileCharacterBuffer, 1, fileSize, textFile);
}

Die Testdatei:

3
112
REd
110
green

#5/09/2014
5087 - 5/6/2014

Sein Hex-Dump, der seine EOLs anzeigt, ist \ r \ n:

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  33 0D 0A 31 31 32 0D 0A 52 45 64 0D 0A 31 31 30  3..112..REd..110
00000010  0D 0A 67 72 65 65 6E 0D 0A 0D 0A 23 35 2F 30 39  ..green....#5/09
00000020  2F 32 30 31 34 0D 0A 35 30 38 37 20 2D 20 35 2F  /2014..5087 - 5/
00000030  36 2F 32 30 31 34 0D 0A                          6/2014..

Nach dem Fread gibt GDB fileCharacterBuffer aus als:

"3\n112\nREd\n110\ngreen\n\n#5/09/2014\n5087 - 5/6/2014\n", '\000' <repeats 51 times>

Nur mit dem \ n ist vorhanden. Was?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage