[C] Funcion Split

  • 1 Respuestas
  • 3023 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
  • Skype: [email protected]
    • Ver Perfil

[C] Funcion Split

  • en: Mayo 14, 2013, 02:39:36 am
Yo no he visto fallos, si los encontrais, comentadlos por favor. No tiene control de errores, lo hice para dar una idea ;).

Código: C
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <string.h>
  4.  
  5. int len_palabra(char *cadena, int inicio, char separador);
  6. char **split(char *cadena, char separador);
  7.  
  8. int main()
  9. {
  10.    char cadena[]="MrBlood.split.crea.funcion";
  11.    int i;
  12.    char **retorno=split(cadena, '.');
  13.    for(i=0;retorno[i]!=NULL;i++)
  14.    {
  15.       printf("%s\n", retorno[i]);
  16.       free(retorno[i]);
  17.    }
  18.    free(retorno);
  19.    return 0;
  20. }
  21.  
  22. int len_palabra(char *cadena, int inicio, char separador)
  23. {
  24.    int len=0, i=inicio;
  25.    while(cadena[i]!=separador&&cadena[i]!='\0')
  26.    {
  27.       len++;
  28.       i++;
  29.    }
  30.    return len;
  31. }
  32.  
  33. char **split(char *cadena, char separador)
  34. {
  35.    int num_palabras=1, len_cadena=strlen(cadena), i, j=1, *inicios;
  36.    for(i=0;i<len_cadena;i++)
  37.    {
  38.       if(cadena[i]==separador)
  39.       {
  40.          num_palabras++;
  41.       }
  42.    }
  43.    inicios=malloc(sizeof(int)*num_palabras);
  44.    inicios[0]=0;
  45.    for(i=1;i<len_cadena;i++)
  46.    {
  47.       if(cadena[i]==separador)
  48.       {
  49.          inicios[j]=i+1;
  50.          j++;
  51.       }
  52.    }
  53.    char **retorno=malloc(sizeof(char *)*num_palabras+1);
  54.    retorno[num_palabras]=NULL;
  55.    for(i=0;i<num_palabras;i++)
  56.    {
  57.       j=len_palabra(cadena, inicios[i], separador);
  58.       retorno[i]=(char *)malloc(sizeof(char)*j);
  59.       strncpy(retorno[i], &cadena[inicios[i]], j);
  60.       retorno[i][j]='\0';
  61.    }
  62.    free(inicios);
  63.    return retorno;
  64. }
  65.  

Sa1uDoS
« Última modificación: Octubre 28, 2013, 09:18:44 am por Expermicid »

Desconectado StuXn3t

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • Twitter: @hackem
    • Ver Perfil
    • Ethical Hacking, Malware Analysis, Disinfection Techniques and more...

Re:[C] Funcion Split

  • en: Mayo 25, 2013, 02:33:47 am
Gracias por el aporte!  :)

 

[C] Función acción cada x segundos - Sanko

Iniciado por Sanko

Respuestas: 3
Vistas: 3257
Último mensaje Diciembre 24, 2012, 08:01:14 pm
por linkgl
Funcion instr o strpos

Iniciado por linkgl

Respuestas: 4
Vistas: 4669
Último mensaje Diciembre 24, 2012, 08:16:13 pm
por linkgl
Función SPLIT con delimitador multicarácter

Iniciado por binary_death

Respuestas: 2
Vistas: 3315
Último mensaje Septiembre 04, 2013, 05:45:48 pm
por [L]ord [R]NA