fileHandling guide...

Discussion in 'Programming' started by mubashirnisar, May 17, 2010.

  1. #1
    hi,

    I've problem in file handling when i instantiate object thorough fstream ... then file does not open or created... and then through exception my problem close..


       
          
    
    
    
    
    #include"iostream"
    #include"fstream"
    #include"cstdlib"
    #include"ClientData.h"
    #include"iomanip"
    #include <stdio.h>
    
    
    
    using namespace std;
    
    void outputline(ostream&,const ClientData&);
    
    
    void main(){
    
    	
    	
    	
    int accountNumber;
    
    char lastName[15];
    char firstName[10];
    double balance;
    
    fstream outCredit;
    
    outCredit.open("credit.txt",ios::out|ios::in|ios::binary);
    
    
    [b]// problem is here.... file does not open...and then program will exit...[/b]
    
    	if(!outCredit)
    	{
    		cerr<<"file could not be openened."<<endl;
    		
    		exit(1);
    
    	}
    	//outCredit.clear();
    
    
    
    cout<<"Enter account number";
    ClientData client;
    
    cin>>accountNumber;
    
    while(accountNumber>0 && accountNumber <=100 )
    {
    
    
    	cout<<"enter lastname, firstName and balance value";
    	cin>>lastName;
    	cin>>firstName;
    	cin>>balance;
    
    	client.setAccountNumber(accountNumber);
    	client.setLastName(lastName);
    	client.setFirstName(firstName);
    	client.setBalance(balance);
    
    	outCredit.seekp( (client.getAccountNumber()-1) * sizeof(ClientData) );
    
    	outCredit.write(reinterpret_cast< const char * >(&client),sizeof(ClientData) );
    
    	cout<<"enter accoutn number"<<endl;
    	cin>>accountNumber;
    
    }
    
    outCredit.close();
    
    //ClientData obj;
    
    ifstream inCredit("credit.txt",ios::in);
    
    
    if(!inCredit)
    	{
    		cerr<<"file could not be openened."<<endl;
    		
    		exit(1);
    
    	}
    
    
    inCredit.read(reinterpret_cast<char * >(&client),sizeof(ClientData) );
    
    while(inCredit && !inCredit.eof())
    {
    
    	if(client.getAccountNumber()!=0)
    		outputline(cout,client);
    
    
    	inCredit.read(reinterpret_cast<char * >(&client),sizeof(ClientData) );
    }
    
    
    inCredit.close();
    
    //remove("credit.txt");
    }
    
    void outputline(ostream &output,const ClientData &record)
    {
    
    	output<<left<<setw(10)<<record.getAccountNumber()
    		<<setw(16)<<record.getLastName()
    		<<setw(11)<<record.getFirstName()
    		<<setw(10)<<setprecision(2)<<right<<fixed
    		<<showpoint<<record.getBalance()<<endl;
    
    
    
    
    		
    }
    Code (markup):
     
    mubashirnisar, May 17, 2010 IP
  2. mubashirnisar

    mubashirnisar Banned

    Messages:
    2,186
    Likes Received:
    22
    Best Answers:
    0
    Trophy Points:
    0
    #2
    anybody reply me...
     
    mubashirnisar, May 18, 2010 IP
  3. daman371

    daman371 Peon

    Messages:
    121
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Apparently it doesn't work when having both in and out mode if you don't have app mode. So you can either add append mode or you can remove ios::in and it will work.
     
    daman371, May 18, 2010 IP