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

本文通过一个具体的示例展示了如何使用C++中的文件流(fstream)进行文件的读写操作,并实现两个有序文件的合并。代码中包含了文件打开、读取、写入等关键步骤,对于理解C++文件流的使用方式很有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值