Função split em C
Publicado por Eduardo (última atualização em 09/10/2009)
[ Hits: 27.805 ]
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 ^_^
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"); }
Automato Finito Determinístico
Retirar caracteres de uma frase
Mini Analisador Léxico que conta palavras numa string
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Problema com impressoras de rede (0)
Ajuda com o Debian 13 - Video hibrido geforce 940 mx Wayland OFF (1)