Pular para o conteúdo

Função split em 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 ^_^
Eduardo gedarius
Hits: 28.139 Categoria: C/C++ Subcategoria: Expressões Regulares
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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 ^_^
Download Split.c Enviar nova versão

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");
}

função de inserção em uma Arvore

Pegando entrada do teclado e guardando em uma string

Conversor de escalas

Verificação do número de CPF

Fila com Lista Encadeada Descritor/Cabeçalho

#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

Entre na sua conta para comentar.