overslaan van een input command

Status
Niet open voor verdere reacties.

FleeZz

Nieuwe gebruiker
Lid geworden
27 nov 2007
Berichten
3
beste ,

Ik ben aan het proberen van een paar oefeningen samen te plaatsen vanuit mijn curus C++
Nu bots ik op wel een raar probleem. Het is precies of de compiler mijn 2de input cmd overslaat en alleen de outputs op het scherm brengt. Ik heb een deeltje van de code hieronder geplaatst.

Code:
void main()
{
short Taal ;
char Naam[30] , sex[7] , vriend[30] ;
int Age , i=0 ;


cout <<"Hi , Hallo , Bonjour ..."<<endl;
cout <<"What language do u speak? press 1 for English"<<endl;

Taal = getche();
cout <<endl<<endl<<endl;

switch (Taal)
{
case '1' : goto English; break;
case '2' : goto Nederlands; break;
case '3' : goto Francais; break;
default  :	cout <<"That number was not specified"<<endl;
			cout <<"Dit nummer was niet opgegeven"<<endl;
			cout <<"Ce numero est pas dans le liste"<<endl;
}

English:
			cout <<"What is your name? ";
			cin >>Naam;
			cout <<endl;
			cout <<"Hi there, "<<Naam<<endl;
			cout<<endl;
			cout <<"How old are u?";
			cin >>Age;
			cout<<endl;
			cout <<"Are u male or Female?";
			cin >>sex;
			cout<<endl;
			cout <<"Wat is de naam van je beste vriend?";
			cin >>vriend ;


		while(vriend != '\0')
		{
			i++;
		}
		i--;

		for(;i>=0;i--)
		{
			cout <<vriend[i];
		}
	getch();

cin>>naam kan ik nog ingeven maar bij Age,sex en vriend wordt dit precies overgeslagen en worden alleen de output geschreven.
Zou dit kunnen dat je niet meer dan 2 arrays na elkaar mag invullen of zie ik gewoon iets over het hoofd?

mvg. Jens
 
Dat komt doordat er rotzooi op de inputstream blijft hangen van vorige inputs (een '\n' om precies te zijn.
Probeer dit bijvoorbeeld:

Code:
int main()
{
  std::cout<<"Typ letter A: ";
  std::cin.get();
  std::cout<<"Typ letter B: ";
  std::cin.get();
  std::cout<<"Te laat je kunt lekker niets meer typen\n";
}

Om dit probleem te verhelpen kun je ignore() gebruiken:

Code:
int main()
{
  std::cout<<"Typ letter A: ";
  std::cin.get();
  std::cout<<"Typ letter B: ";
  cin.ignore();
  std::cin.get();
  std::cout<<"Nu werkt het!\n";
}

Dat is de makkelijke en gore manier om het op te lossen. Voor mooi oplossingen klik hier

groeten Niek
 
opgelost

Bedankt Niek_e. Als je er een cin.ignore(); onder je resterende output regels zet wil hij idd terug je input aanvaarden. Dank u wel ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan