[S] Char von bis ausgeben



  • Hallo,

    ich suche eine funktion die in einem char ein wort oder zeichen sucht und ab dieser position bis zum nächsten wort (kann anders sein) sucht und dann das was dazwischen steht ausgibt. Ich habs schon mit strchr probiert aber komme damit nicht klar

    MFG



  • Nimmst du char oder char* ?

    Sonst zeig mal was du hast.



  • void split (const char* pInput, const char* pOut1, const char* pOut2)
    {
      const char*p = strchr (pInput, ' ');
      if (!p)
      {
        // input contains no ' '
        *pOut1 = '\0';
        *pOut2 = '\0';
      }
      else
      {
        strncpy (pOut1, pInput, p - pInput);
        strcpy (pOut2, p + 1);
      }
    }
    
    int main()
    {
    	char s1[1024], s2[1024];
    	split ("Hallo Welt", s1, s2);
    	printf ("%s\n", s1);
    	printf ("%s\n", s2);
    }
    

    jedoch hab ich dabei das problem, dass ich nur " " splitten kann ich möchte ja ein anfang und ein ende definieren und das was dawischen ist ausgeben

    MFG



  • CAnfänger91 schrieb:

    jedoch hab ich dabei das problem, dass ich nur " " splitten kann ich möchte ja ein anfang und ein ende definieren und das was dawischen ist ausgeben

    Wie du schon sagst, möchtest du den Text zwischen zwei Zeichen ausgeben. Das wird natürlich schwer, wenn du nur einmal ein Zeichen suchst. 🙂



  • const bei pOut ist natürlich falsch, denk mal nach warum.

    void split (const char* pInput, const char *x, char* pOut1,  char* pOut2)
    {
      if( !(x=strstr(pInput,x)) || 2!=sscanf(x,"%s%s",pOut1,pOut2) )
        *pOut1=*pOut2=0;
    }
    
    int main()
    {
        char s1[1024], s2[1024];
    
        split (" bla Hallo Welt fasel ", "Hallo", s1, s2);
        printf ("%s\n", s1);
        printf ("%s\n", s2);
        return 0;
    }
    


  • cooky451 schrieb:

    CAnfänger91 schrieb:

    jedoch hab ich dabei das problem, dass ich nur " " splitten kann ich möchte ja ein anfang und ein ende definieren und das was dawischen ist ausgeben

    Wie du schon sagst, möchtest du den Text zwischen zwei Zeichen ausgeben. Das wird natürlich schwer, wenn du nur einmal ein Zeichen suchst. 🙂

    ja ich weis ja nicht wie ich das 2. zeichen (oder auch ein wort) suche soll



  • Dann schau dir doch mal an welche Funktionen noch so in der Standardlibrary drin sind.
    Die sind in der string.h deklariert.
    Da gibt es z.B. strstr, strpbrk, strspn und strcspn.

    Was willst du denn bei deinem "Hallo Welt" Beispiel anders machen?
    Was soll da rauskommen?



  • Welches soll dein Trennzeichen sein? Wenn es das Zeichen vor und nach dem gewünschten Zeichen ist merkst du dir die Postion an welcher es das erste mal Auftritt und die des zweiten mal...


Log in to reply