Alexander Grund
|
87e3f5d85f
|
Fix fseek and ftell on MinGW
Use fseeko and ftello on MinGW as fseeki64/ftelli64 behaves wrongly
The following code returns 4 after the first fgetc instead of 1 and the seek sets the file pointer at actual position 4 instead of not touching it so the following fgetc skips characters
FILE* f = std::fopen(filename, "r");
std::cout << "PosBeforeSeek " << _ftelli64(f) << "\n";
std::cout << "Seek" << _fseeki64(f, 0, SEEK_CUR) << "\n";
std::cout << "PosAfterSeek " << _ftelli64(f) << "\n";
std::cout << "'" << char(std::fgetc(f)) << "'\n";
std::cout << "PosAfterFGetC " << _ftelli64(f) << "\n";
std::cout << "PosBeforeSeek " << _ftelli64(f) << "\n";
std::cout << "Seek" << _fseeki64(f, 0, SEEK_CUR) << "\n";
std::cout << "PosAfterSeek " << _ftelli64(f) << "\n";
std::cout << "'" << char(std::fgetc(f)) << "'\n";
std::cout << "PosAfterFGetC " << _ftelli64(f) << "\n";
std::fclose(f);
|
2021-03-21 14:34:55 +01:00 |
|