Função split em C

Publicado por Eduardo (última atualização em 09/10/2009)

[ Hits: 27.507 ]

Download Split.c




Função para separar uma frase por um separador definido pelo usuário e retornar uma matriz com todas as partes separadas. O retorno é um ponteiro duplo (**retorno), portanto no programa principal deve-se criar uma variável ponteiro para ponteiro de char:

EX:
int main()
{
char **mat= split("06/10/2009",'/');

//aqui é possível utilizar o "mat" com índices... exemplo:

for(i=0;i<3;i++)
   printf("%s\n",mat[i]);

}
Saída: 06
/****/ 10
/****/ 2009

Espero que gostem ^_^

  



Esconder código-fonte

char **split(char frase[], char separador)
{
    int i, j, k, contsep = 0;

     for(i=0,contsep=0;i<strlen(frase);i++)
       if(frase[i] == separador)
          contsep++;

    char  aux[contsep][20];
    char **result = (char**)malloc(contsep*sizeof(char));
    
    if(contsep)
    {
        for(i=0; i<=contsep; i++ )
          *(result + i) = (char*)malloc(40*sizeof(char));
        
        for(i=0,k=0,j=0; i < strlen(frase); i++)
           if(frase[i] != separador)
           {
              aux[k][j] = frase[i];
              j++;
           }
           else
           {
              aux[k][j] = 0;
              k++;
              j=0;
           }
        aux[k][j] = 0;
        
        for(i=0;i<=contsep;i++)
          *(result+i) = strcpy(*(result+i), aux[i]);
        
        return result;
    }
    else
        mensagem("Nenhum Separador Encontrado");
}

Scripts recomendados

Convolução 1D

Fila com Lista Encadeada Descritor/Cabeçalho

Verificar se o e-mail é válido

Equações de primeiro e segundo grau

Programa para escola


  

Comentários
[1] Comentário enviado por removido em 09/10/2009 - 14:03h

muito bom.

[2] Comentário enviado por gedarius em 09/10/2009 - 16:10h

Vlw britors!!!

só para complementar.... Substituam a função "mensagem" por "printf".... esqueci de alterar isso hehe!!!

[3] Comentário enviado por adilima28 em 11/11/2009 - 15:59h

Tentei compilar no linux, mas retorna o seguinte erro:
warning: incompatible implicit declaration of built-in function ‘malloc’.

[4] Comentário enviado por gedarius em 11/11/2009 - 16:38h

adilima28,

quais bibliotecas você está usando??? deve-se chamar no mínimo essas 2 a seguir:

#include <stdio.h>
#include <malloc.h>

e outra, isso é somente um warning, ele não impede a compilação... provavelmente tem outros erros, vc trocou a função mensagem() por printf????

abraços,
Eduardo

[5] Comentário enviado por adilima28 em 11/11/2009 - 21:18h

Muito bom, só faltava a malloc.h.
Obrigado e um abraço.
Lima.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts