我希望能够读取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);
}
Run Code Online (Sandbox Code Playgroud)
测试文件:
3
112
REd
110
green
#5/09/2014
5087 - 5/6/2014
Run Code Online (Sandbox Code Playgroud)
它的十六进制转储显示其EOL是\ r \n:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 33 0D …Run Code Online (Sandbox Code Playgroud)