1.11M Members

program hangs

 
0
 

The following code is supposed to read records from input and store them in a file called file.dat. Then it is supposed to arrange these records in ascending order, but for some reason the program hangs at line no.61. Can someone please tell me what's wrong?

#include <iostream>
#include <fstream>
#include <strstream>

int main()
{
	std::ofstream file;
	file.open("file.dat",std::ios::trunc|std::ios::binary);
	if(!file)
		std::cout<<"unable to open for output";

	struct record
	{
		char code[6];
		char name[20];
		int i;
	};

	record r;
	int a = 0;

	while(1)
	{
		std::cout<<"Record " << a + 1 << std::endl;
		std::cout<<"Enter character code, name and an int \n";
		std::cin.ignore();
		std::cin.getline(r.code,6);
		std::cin.getline(r.name,20);
		std::cin>>r.i;
		file.write((char *)&r,sizeof(r));
		std::cout<<"\nAdd another (y\\n) : ";
		char c;
		std::cin>>c;
		if(c == 'n')
			break;
		a++;
		std::cout<<'\n'<<'\n';
	}
	file.close();

	std::fstream file1("file.dat",std::ios::in|std::ios::out|std::ios::binary);
	if(!file1)
		std::cout<<"unable to open file1";

	else
	{
		if(a>0)
		{	while(a)
			{
				file1.seekp(0);
				for(int i = a; i>0;i--)
				{
					record r1;
					file1.read((char *)&r,sizeof(r));
					file1.read((char *)&r1,sizeof(r1));
					if(r1.i < r.i)
					{
						file1.seekp(-(sizeof(r)*2),std::ios::cur);
						file1.write((char *)&r1,sizeof(r));
						file1.write((char *)&r,sizeof(r));
						file1.seekg(-(sizeof(r)),std::ios::cur);
					}
				}
		
				a--;
			}
		}
		file1.close();
	}

	std::ifstream file2("file.dat",std::ios::binary);
	if(!file2)
	{
	std::cout<<"unable to open file2";
        exit(0);
        }
	while(1)
	{
		std::cout<<"\n\n";
		file2.read((char *)&r,sizeof(r));
		if(file2.eof())
			break;
		std::cout<<r.code<<'\t'<<r.name<<'\t'<<r.i;
	}
}
 
0
 

Someone please move this thread to C++ board, I posted it in here by mistake.

You
This article has been dead for over six months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article