Avatar billede dadane Novice
03. august 2000 - 20:48 Der er 8 kommentarer og
2 løsninger

Komplet newbie sp.

Hvordan bruge man mellemrum i strenge?



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

void main(void)
{
char c[80];

cout << \"Skriv dit navn\\n\";
// Det virker fint hvis du skriver Søren,
// men ikke hvis du skriver Søren Spætte!
cin >> c;

cout << \"Du skrev at dit navn var \" << c << endl;

}
Avatar billede tigerdyr Nybegynder
03. august 2000 - 21:07 #1
Hvis du skal have mellemrum med i en indtastning er du nødt til at bruge cin.getline
Avatar billede tigerdyr Nybegynder
03. august 2000 - 21:12 #2
Ok, så fik jeg også lige gravet L: igennem efter et eksempel...
char tekst[201];
cout << \"Indtast en streng... maks. 200 tegn\" << endl;
cin.getline(tekst, 200);
cout << tekst;
Avatar billede tigerdyr Nybegynder
03. august 2000 - 21:12 #3
Du kan vist også bruge get() (standard C)
Avatar billede tigerdyr Nybegynder
03. august 2000 - 21:13 #4
Men med getline, skal du blot huske at have et char array der kan indeholde ALLE de tegn du henter + en null terminator og hente med syntaks:
cin.getline(Variabel, AntalTegn);
Avatar billede 127144146281 Nybegynder
03. august 2000 - 23:23 #5
Der kunne man så gøre;
#include <iostream.h>
#include <string.h>
#define MAXTEGN 80

void main(void)
{
char c[MAXTEGN];

cout << \"Skriv dit navn\\n\";
// Det virker fint hvis du skriver Søren,
// men ikke hvis du skriver Søren Spætte!
cin.getline(tekst, MAXTEGN-1);

cout << \"Du skrev at dit navn var \" << c << endl;

}

det smarte er at du så kun behøver at ændre max længden et sted, men det er måske lidt overkill i dit simple prog :)
Avatar billede 127144146281 Nybegynder
03. august 2000 - 23:27 #6
ville selv have sagt;

#include <iostream.h>
#include <string.h>
#define MAXTEGN 80

void main(void)
{
char c[MAXTEGN];

cout << \"Skriv dit navn\\n\";
cin.getline(c, MAXTEGN-1);

cout << \"Du skrev at dit navn var \" << c << endl;

}


hehe er lidt træt
Avatar billede dadane Novice
04. august 2000 - 08:25 #7
Tak skal i have.

Kan jeg udvide spørgsmålet en smule?

Hvad skal jeg så skrive i stedet for

c = \"Dette er en test\";

for det virker heller ikke.
Avatar billede dmk Nybegynder
04. august 2000 - 09:13 #8
For at kopiere en streng, skal du bruge en af funktionerne sprintf, strcpy eller memcpy.

I dette tilfælde er strcpy nok det mest oplagte valg.

strcpy(c, \"dette er en test\");

Du kopierer her indholdet af den anden parameter over i indholdet af den første. Du skal selv sørge for, at c er stor nok til at indeholde hele den streng du kopierer over. Hvis du gerne vil undgå at skulle checke for det først, kan du også benytte funktionen strncpy, som tager en parameter der fortæller, hvor meget den maksimalt må kopiere:

strcnpy(c, \"dette er en test\", MAX_CHARS);

DMK
Avatar billede wisen Nybegynder
04. august 2000 - 10:47 #9
Prøv med dette :

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

using namespace std;

void main(void)
{
string navn;

cout << \"Skriv dit navn\\n\";
cin >> navn;

cout << \"Du skrev at dit navn var \" << navn << endl;
}

Det skulle virke ( er ikke testet ! )

/Jan. (æresmedlem af de bevidst testsky elementer)
P.S stavekontrollen er ikke testet.
Avatar billede dadane Novice
05. august 2000 - 07:39 #10
Wisen,

Nope det gør ingen forskel.
Iøvrigt kan min c++ (gnu\'s) ikke \"string\" men bruger \"char[maxl]\"
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