Avatar billede quiw Nybegynder
13. januar 2006 - 12:18 Der er 8 kommentarer og
1 løsning

Opdeling af Streng.

Hejsa.
Jeg ved at dette problem umiddelbart har været oppe og runde et par gange .. Men synes ikke jeg kan finde noget som virker..
Kunne godt tænke mig et meget kort og meget simpelt eksempel på det her:
char input[15];
char streng1[15];
char streng2[15];
cin >> input;
-> Input er så f.ek.s "Goddag Du!"
Og derefter vil den putte det første ord, "Goddag" ind i streng1 .. Og "Du" ind i streng2 ..
Sådan at den har delt input op.
Avatar billede arne_v Ekspert
13. januar 2006 - 13:05 #1
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
  cout << "Indtast 2 ord: ";
  char input[15];
  cin.getline(input, sizeof(input));
  char *p = strtok(input," ");
  char streng1[15];
  strcpy(streng1,p);
  p=strtok(NULL," ");
  char streng2[15];
  strcpy(streng2,p);
  cout << streng1 << endl;
  cout << streng2 << endl;
  return 0;
}
Avatar billede quiw Nybegynder
13. januar 2006 - 13:12 #2
Hm .. Har sat det ind i min kode ..
    while(online==1)
    {
                    cin.getline(input, sizeof(input));
                    char *p = strtok(input," ");
                    strcpy(command1,p);
                    p=strtok(NULL," ");
                    strcpy(command2,p);
                    commands();
    }

- Det compileres fint .. Men når jeg kører programmet crasher det .. :S
Avatar billede bertelbrander Novice
13. januar 2006 - 20:57 #3
Du kan checke om der blev indtastet 2 ord, hvis ikke der gør det vil dit program crashe.

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
  cout << "Indtast 2 ord: ";
  char input[15];
  cin.getline(input, sizeof(input));
  char *p = strtok(input," ");
  if(p)
  {
    char streng1[15];
    strcpy(streng1,p);
    p=strtok(NULL," ");
    if(p)
    {
        char streng2[15];
        strcpy(streng2,p);
        cout << streng1 << endl;
        cout << streng2 << endl;
    }
    else
    {
        cout << "Jeg sagde TO ord" << endl;
    }
  }
  else
  {
    cout << "Jeg sagde TO ord" << endl;
  }

  return 0;
}
Avatar billede arne_v Ekspert
13. januar 2006 - 21:31 #4
det var en mulig forklaring

og når ikke vi ved hvor programmet crasher nok eneste bud vi kan komme med
Avatar billede quiw Nybegynder
14. januar 2006 - 13:01 #5
Nu virker det :)
- Mange tak .. Men har lige et par hurtige spørgsmål mere ..
#1 Jeg har lavet sådan at hvis man ikke indtaster noget godkendt siger den "Error, enter again" .. Men liiiige når jeg kommer ind i min while lykke siger den "Error" Selvom jeg ikke har indtastet noget ..

- Har et spørgsmål mere, men venter lige med at poste det, vil se om jeg selv kan løse det ..
Avatar billede quiw Nybegynder
14. januar 2006 - 13:27 #6
Og forresten .. Hvordan kan jeg få "char *p = strtok(input," ");" ud af min løkke?.. Min lykke ser således ud:
    while(online==1)
    {
                      cin.getline(input, sizeof(input));
                      char *p = strtok(input," ");
                      if(p)
                      {
                          strcpy(streng1,p);
                          p=strtok(NULL," ");
                          if(p)
                          {
                                strcpy(streng2,p);
                          }
                      }
                      commands();
    }
Avatar billede quiw Nybegynder
14. januar 2006 - 13:36 #7
Ah fik det til at virke .. Men er lidt forvirret .. Kan ik få min kode til at virke .. Og den er 128 Linier så lidt for lang til at poste..
Avatar billede quiw Nybegynder
18. januar 2006 - 14:04 #8
Well, never mind .. Drop lige et svar .. :)
Avatar billede arne_v Ekspert
18. januar 2006 - 15:35 #9
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