C++ 无法读出二进制文件


#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>

using namespace std;

int main()
{
    ofstream f;
    f.open("hello.dat",ios::out|ios::binary);
    ifstream ff;
    ff.open("hello.dat",ios::binary|ios::in);

    char t[7]="Thank!";
    char* v = new char[7];

    f.seekp(ios::beg,ios::cur);
    ff.seekg(ios::beg,ios::cur);

    f.write(t,7);
    ff.read(v,7);

    for(int i=0;i<7;i++)
    {
        printf("%c",v[i]);
    }

    cout<<endl;
    
    for(int i=0;i<7;i++)
    {
        printf("%c",t[i]);
    }
    cout<<endl;
    cout<<strcmp(t,v)<<endl;

    f.close();
    ff.close();
    return 0;
}

能够写入文件中,但读出的数据为0(以字符形式输出);当以%02X输出时,数组 t 与 v 输出的二进制对应十六进制也不同。

请各位帮忙看看出了什么bug

看一下fread和fwrite函数的返回值是多少