fstream 的read 和 write解决思路

fstream 的read 和 write
我想用二进制的方式读写数据:

#include   <cstdlib>
#include   <iostream>
#include   <fstream>
using   namespace   std;

int   main(int   argc,   char   *argv[])
{
        int   a[999],b[999];
        ofstream   ofile;
        ifstream   ifile;
       
        for(int   i=0;i <999;i++)   a[i]=i;
       
        ofile.open( "c:\\file.data ");
        ofile.write((char*)a,sizeof(int)*999);
        ofile.close();
       
        ifile.open( "c:\\file.data ");
        ifile.read((char*)b,sizeof(int)*999);
       
        for(int   i=0;i <999;i++)   cout < <b[i] < <endl;
       
        system( "PAUSE ");
        return   EXIT_SUCCESS;
}

结果显示从的二十几个后就是混乱数字   而且有负数   我想可能是
write   和   read   不能一次执行太多数据   然后我修改了一下:

#include   <cstdlib>
#include   <iostream>
#include   <fstream>
using   namespace   std;

int   main(int   argc,   char   *argv[])
{
        int   a[999],b[999];
        ifstream   ifile;
        ofstream   ofile;
       
        for(int   i=0;i <999;i++)   a[i]=i;
       
        ofile.open( "c:\\file.data ");
        for(int   i=0;i <999;i++)
                ofile.write((char*)(a   +   i),sizeof(int));
        ofile.close();
       
        ifile.open( "c:\\file.data ");
        for(int   i=0;i <999;i++)
                ifile.read((char*)(b   +   i),sizeof(int));
       
        for(int   i=0;i <999;i++)   cout < <b[i] < <endl;
       
        system( "PAUSE ");
        return   EXIT_SUCCESS;
}


还是不对问题出在哪呢?  


------解决方案--------------------
ifile.open( "c:\\file.data ");-> ifile.open( "c:\\file.data ",ios::binary);
ofile.open( "c:\\file.data ");-> ofile.open( "c:\\file.data ",ios::binary);

------解决方案--------------------
for(int i=0;i <999;i++)
ofile. < <a[i] < < " "; //空格分割数据
ofile.close();

ifile.open( "c:\\file.data ");
for(int i=0;i <999;i++)
ifile> > b[i]; //读取时候自动会跳过空格分割符号