Concat d'un caractere a la fin d'un string

Fermé
Bibbou - 17 avril 2011 à 19:54
 Bibbou - 17 avril 2011 à 23:54
Bonsoir,

J'essaye de faire une librairie pour un projet que je dois faire.

J'essaye de couper un char* selon un séparateur (un 'split' qui doit être codé dans a peu prés tous les langages).

Voici ce que j'ai écris :

int count(char* s, int n ,char l){
  int i = 0, res = 0;
  for (i = 0; i<n ; i++) if (s[i] == l) res++;
  return res;  
}

char** split(char* s, int n ,char sep){
  int i=0,j=0,m=count(s,n,sep)+1;
  char temp = ' ';
  char** res = malloc(m);
  for (i = 0; i<m ; i++) res[i] = malloc(n);
  for (i = 0; s[i+1] != '\n' ; i++){
    if (s[i] != sep){
      strcat(res[j],&(s[i]));
    }
    else if (s[i] != sep) {
      j++;
      printf(" ");
    }
  }
  return res;
}


Cela me renvoie une erreur de segmentation.

Pourrait-t-on m'éclairer là dessus?

Merci d'avance.

PS : les arguments envoyés a split sont par exemple:
char* s : "Afghanistan,2010,Total,29121286,14907404,14213882,
n : 128,
sep : ','


A voir également:

1 réponse

J'ai essayé de réécrire moi même strcat mais même problème :

void strAppend(char** s, char c){
  int i=0;
  while (*s[i] != '\0'){
    i++;
  }
  *s[i]=c;
  s[i+1]='\0';  
}

int count(char*, int,char);

char** split(char* s, int n ,char sep){
  int i=0,j=0,m=count(s,n,sep)+1;
  char temp = ' ';
  char** res = malloc(m);
  for (i = 0; i<m ; i++) res[i] = malloc(n);
  for (i = 0; s[i+1] != '\n' ; i++){
    if (s[i] != sep){
      strAppend(&res[j],s[i]);
    }
    else if (s[i] != sep) {
      j++;
    }
  }
  return res;
}
0