Helpwith writing data to file

Hello Experts,

what exactly does this line of code do;

dataIn.write((char*) (&person),sizeof (person));

I got a code form PSC, and I need to understand exactly what this line of code is doing to be able to work it into my program.
Thing is I hardly know anything about c++ at the moment,and I have been kind of thrown off the deep end with a program am creating, anyway...

QUESTION 2;
This code, I got from PSC, the details written to the file is name, address and telephone number, all are char data types.

I need to incorporate an account number (int datatype) for the program i am working on, but don't know how to make the above line of code write the account number in the file as well.

I am generating the account number in code and placing this in a variable. so How would I make the contents of the account number variable write to the file.

LVL 4
claracruzAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
grg99Connect With a Mentor Commented:
Add the line "char accountnumber[20];" to the class definition for "Contact".

Add right after the get name of contact person:
               cout << "\n Enter account number of contact person : ";
               cin.getline(accountnumber , 1000,'\n');
   
.. but it looks like you're rather low on the C++ familiarity, maybe you should go back and read the textbook?

0
 
grg99Commented:
It looks like there is a struct variable named "person", and that statement writes the structure to the file.

If you want to add an account number, just add "int accountnumber;" to the structure definition.  Then it will get written to the file.

0
 
Jaime OlivaresSoftware ArchitectCommented:
I guess 'person' is a structure instance.
write() writes a string of chars to a file, but as person is not a string of chars, you have to "cast" to make write works. Sizeof is a compiler-time function that returns the sizeof any data type, in this case, the size of person structure.  
Notice the ampersand (&) before person, it will give you a "pointer" (memory address) to structure. But as write requires a pointer to a char array, it has been casted to (char *), that is: convert person pointer to char pointer.
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
Jaime OlivaresSoftware ArchitectCommented:
Maybe you can post the person structure definition.
0
 
claracruzAuthor Commented:
I don't really understand any of the above, but here is the code the rest of the code:


 /*--------------------\
| users data entry here |
 \--------------------*/
void inputData(void)
{
      Contact person;
      char continueAdding='Y';
      ofstream dataIn("addressBook.dat",ios::ate);//create binary file
      
      do
      {
            system("CLS");
            cout << "New contact person entry";
            cout << "\n------------------------\n";
            person.add(1);

            dataIn.write((char*) (&person),sizeof (person));
            
            cout << "\nDo you want to add another person? [Y/N] :";
            cin >>continueAdding;
            continueAdding = toupper(continueAdding);
      
      }while (continueAdding!='N');
      
            
      dataIn.close();//close file stream
}


some code from contact.h file;

class Contact {
      char name[25];
      char address[50];
      char telephone[15];
      
      /*the below method is private and used only from within this
       class and transparent to oustide function*/
      bool stringCheck(char*,int);

public:

      void add(int);
      bool compare(char*);
      void display();
      char* returnName();

};

void Contact::add(int flag)
{
      while (!cin.get()) {};

      if (flag==1)
      {
            
            do
            {
                  cout << "\n Enter name of contact person : ";
                  cin.getline(name,1000,'\n');
                  strupr(name);
            }while (!stringCheck(name,1));
                   }
}

char* Customer::returnName(void)
{
      return name;
}

How and where do I get account number into the scheme of things.
Please explain with as little technical speak as possible.


All the data input function is done from contact.h file.
0
 
claracruzAuthor Commented:
Was afraid you were goin to mention the text book thing.... wouldn't be asking if I understood the greek in the textbook. but thanks anyway.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.