-
October 22nd, 2009, 11:09 PM
#1
Challenge - reading/writing file problem... Please HELP!
I am new here and I have a problem with a piece of code. I tried may ways to get this code to work but still nothing.
The code consists of 3 major parts:
menu(void);
writeData(void);
readData(void);
functions.
I was able to create
menu(void);
writeData(void);
but I cannot do :
readData(void);
I need to use the comments to make it work the way it should.
The output should be like this:
Show records:
__________________
Record #1
Name.... Smith Lol
Street...... street something
City...... Any Town
State..... TX
Zip 83949
__________________
Record #2
Name.... Smith Lol
Street...... street something
City...... Any Town
State..... TX
Zip 83949
__________________
.
.
.
HERE IS THE CODE I GOT:
//Specification: Append and display records in a address database
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void menu(void);
void writeData(void);
void readData(void);
string * split(string, char);
const char FileName[] = "File.txt";
ofstream writingFile ("File.txt", ios:ut);
ifstream readingFile ("File.txt");
int main () {
menu();
return 0;
} //end main
void menu(void) {
//allow user to choose to append records, display records or exit the program
cout << "(E)xit , Choose to (A)ppend, (D)isplay records"<< endl <<endl;
char choice =' ';
cin>> choice;
switch (choice)
{
case 'E':
case 'e':
break;
case 'A':
case 'a':
writeData();
break;
case 'D':
case 'd':
readData();
break;
default:
cout<< "ERROR";
break;
}
}//end menu
void writeData(void){
//Write the Address Info to a file
char endEntry;
if (writingFile.is_open()){
do{
string name;
string street;
string city;
string state;
string zip;
cout << "Name..... ";
getline(cin, name);
getline(cin, name); // I need to put that here (more info about this problem can be found here: http://en.allexperts.com/q/C-1040/Getline.htm)
cout << "Street..... ";
getline(cin,street);
cout << "City..... ";
getline(cin,city);
cout << "State.... ";
getline(cin,state);
cout << "Zip..... ";
getline(cin,zip);
writingFile << name << "," << street << "," << city<< ","<< state <<"," <<zip << endl;
cout << "Enter another Record? (Y/N)";
cin >> endEntry ;
}while ((endEntry == 'Y') || (endEntry == 'y'));
menu();
}
writingFile.close();
}
//end write data
void readData(void){
string stringLine;
if (readingFile.is_open()){
getline(readingFile, stringLine);
while(!readingFile.eof()){
char theDeliminator = ',';
split(stringLine, theDeliminator);
}
}
else cout << "ERROR";
readingFile.close();
//read data from a file
//use the split function to break a
//deliminated line of text into fields
}//end read data
string * split(string theLine, char theDeliminator){
//Break theline into fields and save the fields to an array.
//Each field will occupy one element in a character array.
//theLine is a string with fields separated with theDeliminator character.
//Assumes the last field in the string is terminated with a newline.
//Useage: string *theFields = split(lineBuffer, ',');
//determine how many splits there will be so we can size our array
int splitCount = 0;
for(int i = 0; i < theLine.size(); i++){
if (theLine[i] == theDeliminator)
splitCount++;
}
splitCount++; //add one more to the count because there is not an ending comma
//create an array to hold the fields
string* theFieldArray;
theFieldArray = new string[splitCount];
//split the string into seperate fields
string theField = "";
int commaCount = 0;
for(int i = 0; i < theLine.size(); i++){ //read each character and look for the deliminator
if (theLine[i] != theDeliminator) {
theField += theLine[i]; //build the field
}
else { //the deliminator was hit so save to the field to the array
theFieldArray[commaCount] = theField; //save the field to the array
theField = "";
commaCount++;
}
}
theFieldArray[commaCount] = theField; //the last field is not marked with a comma...
return theFieldArray;
} //end split
-
October 23rd, 2009, 02:32 AM
#2
Re: Challenge - reading/writing file problem... Please HELP!
1. Please give a good description of the problem.
Just saying "still nothing" is not enough, and besides it is not true.
2. Please, use tags when you copy your program here.
Write [code] before your first line of code, and [/code] after your last line. This way your program will be much more easy to read, e.g.
Code:
//Specification: Append and display records in a address database
#include <iostream>
....
3. Please write "Urgent" in the title.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|