背景
解析wav格式,发现某个文件解析错误,调试发现,打开文件时,文件偏移是0,读取4字节后,文件偏移是3588,不知道为什么。
奇怪的是换成别的文件,文件偏移就正常,代码一模一样,只是换了个wav文件名。
使用c语言写了一遍,依然一样,换成qt后,读4个字节,偏移位置就是4,正常。
那么ftell和tellg到底是什么意思呢?
为什么对这个特定的文件会有这样的表现?
char szMsg[100]={0};
c语言
// FILE *file = fopen("000.wav", "r");
// qDebug() << ftell(file);
// fread(szMsg, 4, 1, file);
// qDebug() << ftell(file);
// fclose(file);
c++
// std::ifstream file;
// qDebug() << file.tellg();
// file.open("D:/Qt/test/temp1/goldencow1Chinese.wav", std::ios::in);
// file.read(szMsg, 4);
// qDebug() << file.tellg();
// file.close();
Qt
QFile file("goldencow1Chinese.wav");
file.open(QFile::ReadOnly);
qDebug() << file.pos();
file.read(szMsg, 4);
qDebug() << file.pos();
file.close();
wav文件 http://download.youkuaiyun.com/detail/lslsyqyq/9891190