0

I need help. I need help on reading input file using .READ and normal streams. I also need help on sorting input file and passing data to the structure rec and output it without showing any null characters.....

here's my confusing code...

#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>

#define MASTER "F:\\Program Assignment 6\\master.txt"
#define TRANSACT "F:\\Program Assignment 6\\transact.txt"

struct rec
{
    char ssn[9],
         name[20],
         street[20],
         city[20],
         state[2],
         zip[5],
         dummy[2];
};

void OpenFile(ifstream&, ifstream&);
//void ReadFile(ifstream&, ifstream&);
void SortFile(int [], int);
void swap(int&, int&);

void main()
{
    rec record;
    ifstream master;
    ifstream transact;

    cout << "Address.\n\n";

    OpenFile(master, transact);
    SortFile(transact_ssn, 9);
    master.read((char *) &record, sizeof(record));
    while (!master.eof())
    {
        cout << record.ssn << record.dummy
             << record.name << record.dummy
             << record.street << record.dummy
             << record.city << ", "
             << record.state<< ' '
             << record.zip << record.dummy
             << "\n\n\n" << record.dummy;
        master.read((char *) &record, sizeof(record));
    }

    while (!transact.eof())
    {
        master.read((char *) &record, sizeof(record));
    }

    cout << endl;

    master.close();
}

void OpenFile( ifstream& master, ifstream& transact )
{
    master.open( MASTER, ios::nocreate | ios::binary );
    transact.open( TRANSACT, ios::nocreate);
    if(!master)
        cout << "** Can't open " << MASTER << " **" << endl;
    if(!transact)
        cout << "** Can't open " << TRANSACT << " **" << endl;
}

void ReadFile( ifstream& master, ifstream& transact )
{
    char ssn[], transact_ssn[],
         name[],
         street[],
         city[],
         state[],
         zip[],
         dummy[];
    rec record;

    master.read((char *) &record, sizeof(record));
    while( !master.eof() )
    {
        master.read(ssn, 9);
        master.read(name, 20);
        master.read(street, 20);
        master.read(city, 20);
        master.read(state, 2);
        master.read(zip, 5);
        master.read(dummy, 2);
        master.read((char *) &record, sizeof(record));
    }

    transact.read((char *) &record, sizeof(record));
    while( !transact.eof() )
    {
        transact >> transact_ssn;
        transact.read((char *) &record, sizeof(record));
    }
}

void PrintFile()
{
    rec record;

    cout << record.ssn << record.dummy
         << record.name << record.dummy
         << record.street << record.dummy
         << record.city << ", "
         << record.state<< ' '
         << record.zip << record.dummy
         << "\n\n\n" << record.dummy;

void SortFile( int file[], int size )
{
    int pass;   // Number of pass.
    int i;      // Index variable.

   // Do size - 1 passes.
   for (pass = 1; pass < size; ++pass)
      // On each pass, compare size - pass pairs of elements.
      for (i = 0; i < size - pass; ++i)
         if (file[i] > file[i + 1])
            swap(file[i], file[i + 1]);   // Swap if out of ascending order


}

void swap(int& a, int& b)
{
   int temp;

   temp = a;
   a = b;

Edited by pyTony: fixed formating

2
Contributors
2
Replies
4
Views
11 Years
Discussion Span
Last Post by truxpinoyxrl17
0

>I need help.
Yes. Yes, you do.

>here's my confusing code...
That's an understatement. Not only did you neglect to use code tags, which killed any formatting your code may have had, the only comments you use are utterly useless. Perhaps instead of just saying "here's my confusing code", you could give us the code, tell us what you want it to do, tell us what is isn't doing that you want it to do, and provide an example input file along with the expected output. If you fail to do this, I'll be forced to treat you like an idiot and link you here.

0

sorry about that, its my first time here.
ok..
what im trying to do is to read from the input file and pass it into a structure.

void open_file( ifstream& master, ifstream& transact )
{
	// attempts to open the master file and transaction file
	string master;
	string transact;

	master.open( MASTER, ios::nocreate | ios::binary );
	transact.open( TRANSACT, ios::nocreate );
	if( !master )
		cout << " ** Can't open " << master << " **" << endl;
	if ( !transact )
		cout << " ** Can't open " << transact << " **" << endl;
}

void read_file( ifstream& master, ifstream& transact )
{
	char ssn[9], transact_ssn[9],
		 name[20],
		 street[20],
		 city[20],
		 state[2],
		 zip[5],
		 dummy[2];
	rec record;

	master.read((char *) &record, sizeof(record));
	while( !master.eof() )
	{
		master.read(ssn, 9);
		master.read(name, 20);
		master.read(street, 20);
		master.read(city, 20);
		master.read(state, 2);
		master.read(zip, 5);
		master.read(dummy, 2);
		master.read((char *) &record, sizeof(record));
	}

	transact >> transact_ssn;
	while( !transact.eof() )
	{
		transact >> transact_ssn;
	}
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.