读写方式打开文件,竟然不能写????为啥

来源:互联网 发布:最新的网络红歌 编辑:程序博客网 时间:2024/04/29 09:29

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std ;
void main()
{
 int data1 , data2 ;
 fstream infile1 , infile2 , outfile ;
 infile1.open ( "f.dat" , ios::in | ios::out | ios::binary ) ; //因为没有预先的文件,所以自己建立升序
 if ( ! infile1 )
 {
  for ( int i = 0 ; i <= 10 ; i +=2 )
  {
   data1 = i ;
   infile1 << "dfsfadfa" << data1 ;     //实际上竟然没写进去???不懂

 }
 infile1.seekg ( 0 , ios::end ) ; //找出末指针
 long end1 = infile1.tellp() ; //记录末指针
 infile2.open ( "g.dat" ,ios::in | ios::out | ios::binary ) ;
 if ( ! infile2 )
 {
  for ( int j = 1 ; j <= 10 ; j +=2 )
  {
   data2 = j ;
   infile2.write ( ( char * ) & data2 , sizeof( int ) ) ;
  }
 }
 infile2.seekg ( 0 , ios::end ) ;
 long end2 = infile2.tellp() ;
 outfile.open ( "h.dat" , ios::in | ios::out | ios::binary ) ;
 infile1.seekg ( 0 , ios::beg ) ;
 infile2.seekg ( 0 , ios::beg ) ;
 while ( ( long )infile1.tellp() != end1 && ( long )infile2.tellp() != end2 ) //排序
 { 
  infile1.read ( ( char * )&data1 , sizeof( int ) ) ;
  infile2.read ( ( char * )&data2 , sizeof( int ) ) ;
  if( data1 < data2 )
        {
   outfile.write ( ( char * )&data1 , sizeof( int ) ) ;
   infile2.seekg ( -( long )sizeof( int ) , ios::cur ) ;
        }
  else
        {
   outfile.write ( ( char * )&data2 , sizeof( int ) ) ;
   infile1.seekg ( -( long )sizeof(int) , ios::cur ) ;
        }
 }
 while ( ( long )infile1.tellp() != end1 )
 { 
    infile1.read ( ( char * )&data1 , sizeof( int ) ) ;
       outfile.write ( ( char * )&data1 , sizeof( int ) ) ;
 }
    while ( ( long )infile2.tellp() != end2 )
    { 
  infile2.read ( ( char * )&data2 , sizeof( int ) ) ;
        outfile.write ( ( char * )&data2 , sizeof( int ) ) ;
    }
 cout << "文件合并完!" << endl ;
 infile1.close() ;
 infile2.close() ;
 outfile.close() ;
 //system ( "pause" ) ;
}

原创粉丝点击