возврат кареты в C?

Я хочу иметь возможность читать в текстовом файле Windows, изменять его в памяти, а затем перезаписать старый файл с измененными данными. Тем не менее, fread, похоже, не хранит возврат каретки, присутствующий в моем текстовом файле Windows, который отбрасывает вещи, когда я перезаписываю старые данные. Я не могу найти никого, кто, кажется, имел эту проблему.

Вот пример кода, который демонстрирует проблему:

#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);
}

Тестовый файл:

3
112
REd
110
green

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

Его шестнадцатеричный дамп, который показывает, что его EOL являются \ 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..

После фреда GDB печатает fileCharacterBuffer как:

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

Только с подарком \ n. Какие?

Ответы на вопрос(2)

Ваш ответ на вопрос