Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
Split a complex string in C

Ok, so what I need to do is split a string. Here is an example string that I need to split:

test_french_fries

and let's say I want to split the string into two parts, the part before and after:

french

thus I would get a return of something like:

match[1]=[test_]
match[2]=[_fries]

I have tried messing around with strtok() but I have had no success with that. It appears that strtok() splits the string at all delims that are given - so if I were to give it a delim of french, it would separate the string for each character matched - which ISN'T what I want.

I would like to have a delim where I can provide it a str or char* such as "french" and the string be split before and after the string provided.

Are there any other methods besides strtok() that I could possibly try to implement in order to achieve my desired outcome?

I really appreciate any and all help that I receive.

-Patrick

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

strtok() can only split using a single symbol as separator (1 character), you can specify multiple separators in the form of a null-terminated string, but they are delt with individualy. To split a string with another string as separator, you will have to write a custom function. The example below works just like strtok(), but uses a null-terminated C string as separator:

#include <stdio.h>

char *strstrtok(char *src, char *sep)
{
    static char *str = NULL;
    if (src) str = src;
    else src = str;

    if (str == NULL)
        return NULL;

    char *next = strstr(str, sep);
    if (next)
    {
        *next = '\0';
        str = next + strlen(sep);
    }
    else
        str = NULL;

    return src;
}

int main(void) {
    char buf[] = "yoursepmamasepissepsosepfatsepsheseptooksepasepspoonseptosepthesepsuperbowl";
    char *token = strstrtok(buf, "sep");
    while (token)
    {
        printf("%s ", token);
        token = strstrtok(NULL, "sep");
    }
    return 0;
}

Notice just like strtok(), this solution is not thread-safe.

See it working on Ideone: http://ideone.com/cjRGgJ

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda