Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- size_t contador_separadores(char* cadena,char caracter){
- if(caracter =='\0'){
- return 1;
- }
- size_t cantidad_separadores = 0;
- char aux_1[100];
- char aux_2[100];
- char* str = cadena;
- strcpy(aux_1,str);
- while(str){
- str = strchr(aux_1,caracter);
- if(str){
- str = str + sizeof(char);
- strcpy(aux_2,str);
- strcpy(aux_1,aux_2);
- }
- cantidad_separadores++;
- }
- return cantidad_separadores;
- }
- char** split(char* cadena,char caracter){
- size_t cantidad_separadores = contador_separadores(cadena,caracter); // O(n)
- char **strv = malloc(sizeof(char*) * (cantidad_separadores+1));
- char* aux = cadena;
- char cad[cantidad_separadores][100];
- size_t largo = 0;
- char separador[2] = {caracter};
- for(size_t i = 0; i < cantidad_separadores;i++){
- largo = strcspn(aux,separador);
- strncpy(cad[i],aux,sizeof(char)*largo);
- cad[i][largo] = '\0';
- strv[i] = malloc(sizeof(char) * (largo+1));
- strv[i] = cad[i];
- printf("%s \n",strv[i]);
- aux = strchr(aux, caracter)+ sizeof(char);
- }
- strv[cantidad_separadores] = NULL;
- return strv;
- }
- size_t contador_unidores(char** cadena){
- size_t contador=0;
- while(cadena[contador]){
- contador++;
- }
- return contador;
- }
- void free_strv(char** cadena){
- size_t contador=0;
- while(cadena[contador]){
- free(cadena[contador]);
- contador++;
- }
- free(cadena);
- }
- char* join(char** cadena, char caracter){
- char unido[1000];
- char* aux = "";
- if(!cadena){
- return aux;
- }
- char parte[100];
- size_t cantidad_unidores = contador_unidores(cadena);
- strcpy(unido,aux);
- strcpy(parte,aux);
- for(size_t i = 0; i < cantidad_unidores; i++){
- strcpy(parte,cadena[i]);
- strcat(unido,parte);
- if(i != cantidad_unidores - 1){
- strcat(unido,&caracter);
- }
- }
- aux= unido;
- free_strv(cadena);
- return aux;
- }
- int main(){
- char* s1 = "1 2 3 4 5";
- char caracter = ' ';
- size_t lon = contador_separadores(s1,caracter);
- printf("%i cantidad de elementos del arreglo \n\n",lon+1);
- char** s = split(s1,caracter);
- printf("todo ok \n");
- if(s)
- printf("%s \n",s[0]);
- char* s2 = join(s,caracter);
- if(!strcmp(s1,s2))
- printf("muy biennn \n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement