Avatar billede jonlanghoff Nybegynder
06. februar 2006 - 14:35 Der er 12 kommentarer

At dele string op

Hejsa!

Jeg har en string der f.eks. ser således ud:

c:\lala\lala\,hehehe,traaa

Nu vil jeg gerne putte dette ind i tre forskellige strings, så de ender sådan her:

str1 = c:\lala\lala\
str2 = hehehe
str3 = traaa

Hvordan gør jeg dette?

Med venlig hilsen,
Jon
Avatar billede arne_v Ekspert
06. februar 2006 - 15:32 #1
strtok maaske
Avatar billede arne_v Ekspert
06. februar 2006 - 15:37 #2
eksempel som splitter paa 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 arne_v Ekspert
06. februar 2006 - 15:39 #3
jeg ved faktisk ikke hvad det tilsvarende for C++ STL string er
Avatar billede bertelbrander Novice
06. februar 2006 - 20:58 #4
Jeg kender heller ikke nogen let metode i C++, så man er nok nødt til at kaste sig ud i:

#include <iostream>
#include <string>

int main()
{
  std::string In = "c:\\lala\\lala\\,hehehe,traaa";
  std::string::size_type p1 = In.find(',');
  std::string::size_type p2 = In.find(',', p1 + 1);
  std::string Out1 = In.substr(0, p1);
  std::string Out2 = In.substr(p1 + 1, p2 - p1 - 1);
  std::string Out3 = In.substr(p2 + 1);
  std::cout << Out1 << "|" << Out2 << "|" << Out3 << std::endl;
}
Avatar billede jonlanghoff Nybegynder
07. februar 2006 - 14:40 #5
arne, hvordan får jeg så programmet til at skrive disse brudstykker ind i nogle variabler??
Avatar billede jonlanghoff Nybegynder
07. februar 2006 - 14:46 #6
Jeg har nu et stykke kode der ser således ud:

void ArgumentHandling(int argc, char *argv[1])
{
    char argstring[300] = "", *p;
   
    if(argc > 1)
    {
        int i;
        for (i = 1; i < argc; i++)
        {
            strcat(argstring, argv[i]);
        }
    }
   
    argstring, sizeof(argstring), stdin;
    argstring[strlen(argstring)-1] = '\0';
    p = strtok(argstring, ",");
    printf("%s\n" ,p);
    while((p = strtok(NULL, ","))!=NULL)
    {
        printf("%s\n",p);
    }
    getch();
}

argstring består af de argumenter programmet bliver kaldt med - sti,filtype,excludeliste - eksempel: c:\hej\,dll,excludes.txt,

De tre ovenstående værdier skal så ligges ind i følgende tre variabler:
WhereToSearch, WhatToSearchFor og ExcludeList.

På forhånd tak! :)

Jon
Avatar billede arne_v Ekspert
07. februar 2006 - 15:20 #7
strcpy
Avatar billede jonlanghoff Nybegynder
08. februar 2006 - 10:08 #8
:) Så langt havde jeg tænkt... Men mere hvordan, rent praktisk... I en for-løkke eller...?
Avatar billede jonlanghoff Nybegynder
08. februar 2006 - 10:09 #9
Koden ser nu således ud:

void ArgumentHandling(int argc, char *argv[])
{   
    char argstring[300] = "", *token, seperator[] = ",;";

    if(argc > 1)
    {
        int i;
        for (i = 1; i < argc; i++)
        {
            strcat(argstring, argv[i]);
        }
    }

    token = strtok(argstring, seperator);
    while(token != NULL)
    {
        printf("%s\n", token);
        token = strtok(NULL, seperator);
    }
   
    getch();
}
Avatar billede jonlanghoff Nybegynder
08. februar 2006 - 12:22 #10
Jeg fixede det med switch og case inde i while-løkken.
Avatar billede arne_v Ekspert
08. februar 2006 - 14:36 #11
hvis du skal returnere noget fra den funktion skal du bruge strcpy
Avatar billede arne_v Ekspert
22. april 2006 - 23:24 #12
tid at få afsluttet her ?
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