substr



  • hi,

    hat von euch schon jemand eine funktion geschrieben mitder man ein char-array teilen kann. also soeine funktion hier

    char *strsub(char *text, size_t start, size_t length)
    {
    
    }
    

    ich brauch sone funktion unbeding aber ich bekomms einfach nicht hin... kann mir jemand helfen?

    mfg blan



  • sowas?

    #include <stdio.h>
    
    void split (char *in, char *left, char *right, int i)
    {
       char *pt = in + i;
    
       while (*in)
       {
          if (in < pt)
             *left++ = *in;
          else
             *right++ = *in;
          in++;
       }
       *left = 0;
       *right = 0;
    }
    
    void main (void)
    {
       char left[256];
       char right[256];
    
       split ("hellosplitter", left, right, 5);
    
       printf ("links: %s\nrechts: %s\n", left, right);
    }
    

    :xmas2:



  • net schrieb:

    sowas?

    #include <stdio.h>
    
    void split (char *in, char *left, char *right, int i)
    {
       char *pt = in + i;
    
       while (*in)
       {
          if (in < pt)
             *left++ = *in;
          else
             *right++ = *in;
          in++;
       }
       *left = 0;
       *right = 0;
    }
    
    void main (void)
    {
       char left[256];
       char right[256];
    
       split ("hellosplitter", left, right, 5);
    
       printf ("links: %s\nrechts: %s\n", left, right);
    }
    

    :xmas2:

    danke.. sowas in der art.

    ich möchte gern ein char-array angeben und dann 2 positionen... einmal den anfang und einmal die länge. dann gibt er mit den teil aus dem angegeben char-array zurück.

    bsp:

    strsub("hello world", 2, 3) ergibt "llo" ... sowas gibts glaub bein den C++ Strings..

    mfg blan



  • dann probier dies:

    void substr (char *in, char *out, unsigned int start, unsigned int count)
    {
        char *first = in + start;
        char *last = first + count;
    
        while (*in)
        {
            if (in >= first)
                *out++ = *in;
            if (in++ == last)
                break;
        }
        *out = 0;
    }
    

    :xmas2:



  • Hm, strncpy( ) 😉

    Fast as hell...

    Greetz, Swordfish


Log in to reply