Avatar billede Slettet bruger
06. november 2001 - 11:24 Der er 3 kommentarer og
2 løsninger

Læs string til et bestemt tegn

Der findes en funktion der læser en string til et bestemt tegn mødes og retunere denne substring.

F.eks.
char ensstring[] = \"aaaaaa|bbbbb|ccccc\"
char enandenstring[];

Jeg vil så gerne læse indtil \"|\" mødes og lægge aaaaaa ned i enandenstring;

Nogen der kender funktionen?
Avatar billede disky Nybegynder
06. november 2001 - 11:25 #1
strncpy kan gøre det.
Avatar billede soepro Nybegynder
06. november 2001 - 11:31 #2
#include <string.h>

int main(void)
{
  char enstring[] = \"aaaaa|bbbbb|ccccc\";
  char enandenstring[];
  char ptrstring  = null;

  ptrstring = strtok(enstring, \"|\");
  if (ptrstring != NULL)
  {
    enandenstring = (char[])malloc(strlen(ptrstring)+1);
    strcpy(enandenstring, ptrstring);
  };

  printf(\"Nu er første del-streng af %s (adskilt af |) kopieret over i enandenstring = %s\", enstring, enandenstring);
  return 0;
}
 
strncpy(enandenstring, strtok
Avatar billede soepro Nybegynder
06. november 2001 - 11:41 #3
Sorry - det kom lidt tyrkfjel i - vi prøver igen:

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

int main(void)
{
  char enstring[] = \"aaaaa|bbbbb|ccccc\";
  char enandenstring*;
  char ptrstring  = null;

  ptrstring = strtok(enstring, \"|\");
  if (ptrstring != NULL)
  {
    enandenstring = (char*)malloc(strlen(ptrstring)+1);
    strcpy(enandenstring, ptrstring);
  };

  printf(\"Nu er første del-streng af %s (adskilt af |) kopieret over i enandenstring = %s\", enstring, enandenstring);
  return 0;
}

Benærk at strtok faktisk indsætter \'\\x0\' i den oprindelige streng i stedet for delimeter karateren. Derfor vises enstring efter at strtok er kørt første gang, som \'aaaaa\' kun. Når du skal have fat i næste del af strengen skriver du bare:

ptrstring = strtok(NULL, \"|\");

idet NULL som første parameter betyder \"fortsæt med samme streng som sidst\".
Avatar billede soepro Nybegynder
06. november 2001 - 11:41 #4
og så skal ptrstring selvfølgelig OGSÅ definers som en char *:

char * ptrstring = NULL;
Avatar billede jpk Nybegynder
06. november 2001 - 11:45 #5
Det lyder som om det er en string tokenizer du har brug for, tjek funktionen \"strtok\"
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