#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" ) ;
}