Avatar billede jannek_ek Nybegynder
20. juli 2004 - 13:04 Der er 9 kommentarer og
1 løsning

ignorere en cin.getline

Af en eller anden grund ignorere mit program den næstsidste cin.getline, på trods af at den er næsten identisk med den sidste (den bliver også ignoreret når den er identisk med den sidste).

koden ska ikke bruges til noget, men jeg vil bare ha det på plads før jeg fortsætter.

#include <iostream.h>
#include <string.h>
#include <stdlib.h>

#define namenr 51
#define nicknr 21
#define bananernr 6

int main ()
{
  char name [namenr];
  char nick [nicknr];
  char bananer [bananernr];
  char bananpris [bananernr];
  float pris;
  int antal;
  strcpy (name, "Hej Henning!");
  cout << name << endl;
  int cha (0), count (0);
  do
  {
    cout << "'" << name[cha] << "' ";
    count++;
  } while (name[cha++] != '\0');
  cout << "\nHer er der " << count << " tegn, det sidste ' ' tæller også med, da den indenholder \nslut-tegnet '\\0'.\n";
  cout << "\nDet var så det... Hvad hedder du? (max. " << namenr - 1 << " tegn)\n";
  cin.getline (name, namenr - 1);
  cout << "\nJammen dav " << name;
  cout << "\nHvad er dit nick så? (max. " << nicknr - 1 << " tegn)\n";
  cin >> nick;
  cout << "\nOk så må jeg jo hellere kalde dig " << nick << endl;
  cout << "\nFor at tale om noget andet, hvor meget koster bannaner så? (max. " << bananernr - 1 << " tegn)\n";
  cin.getline (bananpris, bananernr - 1);
  pris = atof (bananpris);
  cout << "\nOk, hvor mange plejer du at købe af gangen? (max. " << bananernr - 1 << " tegn)\n";
  cin.getline (bananer, bananernr - 1);
  antal = atoi (bananer);
  cout << "\n\nSå ska du jo af med " << antal * pris << " kr. hver gang du køber bananer...";
  return 0;
}
Avatar billede arne_v Ekspert
20. juli 2004 - 13:09 #1
Prøv og ret programmet til enten kun at bruge cin >> eller kun at bruge cin.getline !
Avatar billede jannek_ek Nybegynder
20. juli 2004 - 13:21 #2
nu er
cin >> nick;
rettt til
cin.getline (nick, nicknr - 1);

men nu ignorere den bare den nederste cin.getline i stedet for den næstsidste
Avatar billede arne_v Ekspert
20. juli 2004 - 13:28 #3
Mytisk fordi programmet kører hos mig med den rettelse.
Avatar billede arne_v Ekspert
20. juli 2004 - 13:28 #4
Du har ikke indtastet en for lang streng ?
Avatar billede jannek_ek Nybegynder
20. juli 2004 - 13:34 #5
jeg for ikke muligheden for at indtaste nogen streng
Avatar billede arne_v Ekspert
20. juli 2004 - 13:39 #6
Jeg snakker om en af de foregående getline's ...
Avatar billede jannek_ek Nybegynder
20. juli 2004 - 13:45 #7
hmm
jo det var fejlen... men jeg ved ikke hvorfor jeg maks må 4 tegn

cin.getline (etellerandet, det tal der står her, er det med eller uden '\0'?)
Avatar billede arne_v Ekspert
20. juli 2004 - 13:54 #8
Med.

Som generelt råd vil jeg anbefale at bruge en stor buffer til cin.getline !
Avatar billede arne_v Ekspert
20. juli 2004 - 13:54 #9
Og et svar
Avatar billede jannek_ek Nybegynder
20. juli 2004 - 15:42 #10
ok tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester