Avatar billede zapzie Nybegynder
28. januar 2003 - 15:34 Der er 8 kommentarer og
2 løsninger

Brug af "space" i char

Kan man gøre så der må bruges "space" i en char fx

char name1[100];
char name2[100];

std::cout << "Indtast navn 1: ";
std::cin >> name1;
std::cout << "Indtast navn 2: ";
std::cin >> name2;

Hvis man nu indtaster Jens Jensen som name1, så tror den jo at
name1 = Jens
name2 = Jensen
istedet for at name1 = Jens Jensen

noget måde at få den til at godtag "space" som et tegn i navnet?
Avatar billede soreno Praktikant
28. januar 2003 - 15:39 #1
F.eks.
#include <stdio.h>

int main()
{
  char string [256];
  printf ("Insert your full address: ");
  gets (string);
  printf ("Your address is: %s\n",string);
  return 0;
}
Avatar billede arne_v Ekspert
28. januar 2003 - 15:48 #2
Hvis du vil bruge C I/O, så er Sørens løsning en god løsning.

Hvis du vil holde dig til C++ I/O så skal du bruge:

std::cin.getline(name1,sizeof(name1));
Avatar billede arne_v Ekspert
28. januar 2003 - 15:50 #3
Iøvrigt hvus du sætter en:

using namespace std;

ind et sted øverst, så kan du spare dig alle de std:: du har !
Avatar billede zapzie Nybegynder
28. januar 2003 - 15:52 #4
ja :D
tak for det.
Avatar billede zapzie Nybegynder
28. januar 2003 - 15:55 #5
tak, nu fik jeg også arne_v's svar med. Jeg vil helst holde mig til C++ I/O, så det er grunden til fordelingen af pointene.
Jeg ved godt det med "using namespace std;" men ellers tak.
Avatar billede soreno Praktikant
28. januar 2003 - 15:56 #6
Men vær opmærksom på at brugeren kan forsage en buffer overflow med den metoden.
Du skulle nok istedet bruge:

#include <stdio.h>

int main(int argc, char **argv)
{
    char string [256];
    printf ("Insert your full address: ");
    fgets(string, 256, stdin);
    printf ("Your address is: %s\n",string);
    return 0;
}
Avatar billede arne_v Ekspert
28. januar 2003 - 16:02 #7
Søren - siger du at getline kan laver buffer overflow, selvom
buffer størrelsen er med som argument ?
Avatar billede soreno Praktikant
28. januar 2003 - 16:04 #8
Nej, jeg skrev mit indlæg som en fortsættelse af mit eget. Men på grund af en stavefejl i mit testprogram kunne jeg ikke lige få det til at virke.
Derfor tog de lige et par minutter med at spotte fejlen. I mellemtiden havde du svaret - uden jeg vidste det.
:-)
Avatar billede arne_v Ekspert
28. januar 2003 - 16:15 #9
Nå. OK. Så er jeg med.

Ja - gets er jo "klassisk" i.f.t. buffer-overflow !
Avatar billede soreno Praktikant
28. januar 2003 - 16:24 #10
Ja, det har vi jo være igennem her:
http://www.eksperten.dk/spm/299189

(men alligevel havde jeg glemt det da jeg postede mit svar..)
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