Program runs as if there is no getch() command!

         Im attempting to learn C++ using Borland's C++ Builder and a good
 tutorial book which came with it.  I however have run into a problem.
 Using the code supplied with the tutorial the program will give off no
 errors but when run will go on and off in about 1/2 sec.  It is as if
 there is no getch() statement.  Could you PLZ PLZ PLZ look at it and let
 me know what I am doing wrong.... Im about ready to pull my hair out!!
 Aaron Gorsky

 #include <iostream.h>
 #include <conio.h>
 #include <stdlib.h>
 #pragma hdrstop

 #include "structur.h"

 void displayRecord(int, mailingListRecord mlRec);

 int main(int, char**)
   // create an array of mailingListRecord structures
   mailingListRecord listArray[3];
   cout << endl;
   int index = 0;
   // get three records
   do {
     cout << "First Name: ";
       sizeof(listArray[index].firstName) - 1);
     cout << "Last Name: ";
       sizeof(listArray[index].lastName) - 1);
     cout << "Address: ";
       sizeof(listArray[index].address) - 1);
     cout << "City: ";
       sizeof(listArray[index].city) - 1);
     cout << "State: ";
       sizeof(listArray[index].state) - 1);
     char buff[10];
     cout << "Zip: ";
     cin.getline(buff, sizeof(buff) - 1);
     listArray[index].zip = atoi(buff);
     cout << endl;
   while (index < 3);
   // clear the screen
   // display the three records
   for (int i=0;i<3;i++) {
     displayRecord(i, listArray[i]);
   // ask the user to choose a record
   cout << "Choose a record: ";
   char rec;
   // be sure only 1, 2, or 3 was selected
   do {
     rec = getch();
     rec -= 49;
   } while (rec < 0 || rec > 2);
   // assign the selected record to a temporary variable
   mailingListRecord temp = listArray[rec];
   cout << endl;
   // display the selected record
   displayRecord(rec, temp);
   return 0;

 void displayRecord(int num, mailingListRecord mlRec)
   cout << "Record " << num + 1 << ":" << endl;
   cout << "Name:     " << mlRec.firstName << " ";
   cout << mlRec.lastName;
   cout << endl;
   cout << "Address:  " << mlRec.address;
   cout << endl << "          ";
   cout << << ", ";
   cout << mlRec.state << "  ";
   cout <<;
   cout << endl << endl;

 code for Struct.h is as follows

 #ifndef _STRUCTUR_H
 #define _STRUCTUR.H
 struct mailingListRecord {
   char firstName[20];
   char lastName[20];
   char address[50];
   char city[20];
   char state[5];
   int zip;
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

getch() requires you the press the enter key after typing in something. For example, if you entered "12" and then pressed enter, the first call to getch() will return you '1', the next call will return you '2'.

agorskyAuthor Commented:
Ok... But, what do I need to actually add to the code to make it work.  I typed it word for word in the tutorial with no luck. IfI need to type more getch() statements then where would I putthem?Thanks
Tutorial code doesn't always work.  Sad but true.  Try using cin (the counterpart of cout) to grab the incoming string.  You could also look at using a string class with a readstring method.  Getch() and getche() are single character functions.

My other reccommnedation is to learn C++ using the IDE to write the programs and then compile on the command line.  The C++ builder hides alot of the learning from the user and should be used AFTER you understand how the language works.
Although the code doesn't look so nice to me, it ran okay when I tested it as a *** console *** application.
Each executable you are creating is espacially targeted at a specific platform, such as Dos, Unix or Windows. The code you wrote is clearly intended to run under Dos or a Win95 console (which you might view 32 bit Dos).
When you create a new project with the BC5 IDE, and presumably also with C++ Builder, the target type's default is Win95 GUI! This will compile your code and run it (in .5 sec or so).
Try changing the application's target type to either 16 bit Dos or Win32 Console.
Good Luck,

PS. I agree with rprice's comment on learning C++.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
agorskyAuthor Commented:
Thanks for the help... You were right! In project options the linker is set to GUI.... I set it to Console and received a different problem however....It now says...[linker error]Unresolved external "_main" referenced from module c0nt.ASM.Any ideas???
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.