fread()函数读文本文件重复读最后一个字符问题【已解决】
对文本文件读写时遇到一个问题,fread()读所有内容的时候文件的最后一个字符总会重复读,我的代码如下:
FILE* file = nullptr; fopen_s(&file, "D:\\test.ini", "r"); const uint32_t nlen = 1024; std::unique_ptr<char[]> qpFile(new char[nlen]); char* chTemp = qpFile.get(); memset(chTemp, 0,nlen ); size_t isize = fread(chTemp, sizeof(char), nlen , file); fclose(file); file = nullptr;
test.ini文件内容如下:
调试 chTemp="[test]\nkey=valuee",多了一个字符,但是读出的字节数isize=16 !!后面又尝试其它内容,总会重复读最后一个字符,
然后就这样改了下:
FILE* file = nullptr; fopen_s(&file, "D:\\test.ini", "r"); const uint32_t nlen = 1024; std::unique_ptr<char[]> qpFile(new char[nlen]); char* chTemp = qpFile.get(); memset(chTemp, 0,nlen ); size_t isize = fread(chTemp, sizeof(char), nlen , file); chTemp[isize] = '\0';//读的重复字符改为结束符 fclose(file); file = nullptr;
再看chTemp="[test]\nkey=value",解决问题。
fread读文本文件总会重复读最后一个字符,那么读二进制文件会不会重复呢?
找了几个二进制文件读了下,没有重复读!!