Avatar billede huggebanden Nybegynder
16. september 2003 - 19:32 Der er 3 kommentarer og
2 løsninger

dele streng op

Hvilke "koder" kan jeg bruge til at dele en streng op?
Avatar billede arne_v Ekspert
16. september 2003 - 19:40 #1
Den her kode deler op ved mellemrum:

#include <stdio.h>
#include <string.h>

int main()
{
  char s[256],*p;
  printf("Enter line: ");
  fgets(s,sizeof(s),stdin);
  s[strlen(s)-1]='\0';
  p = strtok(s, " ");
  printf("%s\n",p);
  while((p=strtok(NULL," "))!=NULL) {
      printf("%s\n",p);
  }
  return 0;
}
Avatar billede stefanfuglsang Juniormester
16. september 2003 - 19:45 #2
strtok er god, hvis du skal søge igennem en streng, der er delt op af tegn, f.eks komma, mellemrum eller andet:

første kald:
//MyWords = "abc,def;ghi.jkl"
PointerToWord=strtok(MyWords,",;.");

følgende kald:
PointerToWord=strtok(MyWords,null);

I første kald returneres pointer til det første ord ("abc")
I de næste kald flyttes pointeren til de næste ord.
(praksis sætter strtok en nul-byte ind i strengen for hver seperator (",", ";" og "."), så man skal lave en kopi, hvis strengen ikke må ødelægges)
Avatar billede narrr Nybegynder
16. september 2003 - 19:55 #3
Jeg plejer at bruge denne her(ja, den kommer fra accelerated c++, i know):

---
vector<string> split(const string& str)
{
    string::size_type i = 0;
    vector<string> ret;

    while(i<str.size()) {

        while(str[i] == ' ' && i < str.size())
            ++i;

        string::size_type j = i;

        while(str[j] != ' ' && j < str.size())
            ++j;

        if(i != j)
            ret.push_back(str.substr(i, j-i));

        i = j;

    }

    return ret;
}
---
Avatar billede huggebanden Nybegynder
17. september 2003 - 15:44 #4
hvad nu hvis jeg har en streng der siger "mennesker" og jeg bare vil have "ske" eller "k"?
Avatar billede arne_v Ekspert
17. september 2003 - 15:52 #5
Hvad vil du dele på ?

Du kan altid snuppe nogle bytes med:

char s[] = "mennesker";
char s2[4];
strncpy(s2,s+5,3);
s2[3]='\0';

vil hente "ske".
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