鱼C论坛

 找回密码
 立即注册
查看: 1865|回复: 4

[已解决]为什么会显示找不到文件呢

[复制链接]
发表于 2020-5-13 10:34:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
// Exercise 14.6 Solution: Ex14_06.cpp
#include <iostream> 
#include <iomanip> 
#include <fstream>
#include <string>
#include <cstdlib> // exit function prototype
using namespace std;

void printOutput( ofstream&, int, string, string, double ); // prototype

int main()
{
   int masterAccount; // holds account from old master file
   int transactionAccount; // holds account from transactions file
   double masterBalance; // holds balance from old master file
   double transactionBalance; // holds balance from transactions file
   string masterFirstName; // first name from master file
   string masterLastName; // last name from master file

   // file streams for input and output files
   ifstream inOldMaster( "oldmast.dat" );
   ifstream inTransaction( "trans.dat" );
   ofstream outNewMaster( "newmast.dat" );

   // terminate application if old master file cannot be opened
   if ( !inOldMaster ) 
   {
      cerr << "Unable to open oldmast.dat\n";
      exit( 1 );
   } // end if
   
   // terminate application if transactions file cannot be opened
   if ( !inTransaction ) 
   {
      cerr << "Unable to open trans.dat\n";
      exit( 1 );
   } // end if

   // terminate application if new master file cannot be opened
   if ( !outNewMaster ) 
   {
      cerr << "Unable to open newmast.dat\n";
      exit( 1 );
   } // end if

   // display account currently being processed
   cout << "Processing...\n";
   inTransaction >> transactionAccount >> transactionBalance;

   // read from master file until end of transactions file reached
   while ( !inTransaction.eof() ) 
   {
      inOldMaster >> masterAccount >> masterFirstName
         >> masterLastName >> masterBalance;
      
      // display accounts from master file until 
      // number of new account is reached
      while ( masterAccount < transactionAccount && !inOldMaster.eof() ) 
      {
         printOutput( outNewMaster, masterAccount, masterFirstName,
            masterLastName, masterBalance );
         inOldMaster >> masterAccount >> masterFirstName
            >> masterLastName >> masterBalance;
      } // end while

      // tell user if account from transactions file does not match 
      // account from master file
      if ( masterAccount > transactionAccount ) 
      {
         cout << "Unmatched transaction record for account "
            << transactionAccount << '\n';

         // get account and balance from transactions file
         inTransaction >> transactionAccount >> transactionBalance;
      } // end if 

      // if matching account found, update balance and output account info
      if ( masterAccount == transactionAccount ) 
      {
         masterBalance += transactionBalance;
         printOutput( outNewMaster, masterAccount, masterFirstName,
            masterLastName, masterBalance );
      } // end if

      // get next account and balance from transactions file
      inTransaction >> transactionAccount >> transactionBalance;
   } // end while

   // output remaining accounts to new master file
   while ( !inOldMaster.eof() ) 
   {
      inOldMaster >> masterAccount >> masterFirstName
         >> masterLastName >> masterBalance;

      if (!inOldMaster.eof())
         printOutput( outNewMaster, masterAccount, masterFirstName,
            masterLastName, masterBalance );
   } // end while
} // end main

// function to display output
void printOutput( ofstream &oRef, int mAccount, string mfName,
   string mlName, double mBalance )
{
   // set output format
   cout << fixed << showpoint;
   oRef << fixed << showpoint;

   // display account number, name and balance
   oRef << mAccount << ' ' << mfName << ' ' << mlName << ' '
      << setprecision( 2 ) << mBalance << '\n';
   cout << mAccount << ' ' << mfName << ' ' << mlName << ' '
      << setprecision( 2 ) << mBalance << '\n';
} // end function printOutput

这是ex-14-06的代码
所有文件和源代码cpp文件都是放在同一个文件夹下的
最佳答案
2020-5-13 10:37:18
看下你这个代码是在哪个平台下编译的··在windows下,生成的exe会放到debug文件夹下,而你的.dat文件是和代码在同一个文件下,这样肯定找不到。如果在Linux下,这个路径可以指定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-13 10:37:18 | 显示全部楼层    本楼为最佳答案   
看下你这个代码是在哪个平台下编译的··在windows下,生成的exe会放到debug文件夹下,而你的.dat文件是和代码在同一个文件下,这样肯定找不到。如果在Linux下,这个路径可以指定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 10:41:34 | 显示全部楼层
上善若水··· 发表于 2020-5-13 10:37
看下你这个代码是在哪个平台下编译的··在windows下,生成的exe会放到debug文件夹下,而你的.dat文件是和 ...

是在windows下的,那是应该把文件移到debug文件夹下吗还是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-13 10:44:16 | 显示全部楼层
是的,放到和exe在同一个文件夹下。你也可以用全局路径试试...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 11:51:16 | 显示全部楼层
上善若水··· 发表于 2020-5-13 10:44
是的,放到和exe在同一个文件夹下。你也可以用全局路径试试...

好的谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 18:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表