Salut,
Déjà en C particulièrement, on teste toujours si la variable ne vaut pas NULL, ce qui permet d'éviter bon nombres de segfaults.
Par exemple, à chaque fois que tu fais "pointeur=..."; il faut mettre après une vérification du style :
if(pointeur==NULL){
fputs("erreur pointeur",stderr);
exit(EXIT_FAILURE);
}
Ca pourrait mieux t'aider à voir d'où viennent certains segfaults.
Sinon l'idée du strchr(...,'\0');, c'est spécial. Tu as l'utilisateur strcat (ou strncat) qui permet de faire de la concaténation. C'est ce que tu sembles vouloir faire.
Tu as mis quoi comme entrée au clavier ?
Sinon, mets ton code dans l'intégralité, il faut qu'on puisse tout voir, les #include, les fonctions globales, les fonctions le main etc. Si ton programme est trop grand, enlève toutes les parties inutiles jusqu'à obtenir un code compilable et qui reproduit ton segfault.