Je n'ai pas regardé le reste, mais :
char *codeLa;
...
scanf(" %s",codeLa); |
*codeLa n'a aucun espace de défini. Comme tu ne lui as affecté aucune valeur, il pointe potentiellement n'importe où en mémoire. Ton scanf() va donc tenter d'insérer n'importe où en mémoire.
Donc, segfault.
J'ajouterais que tu devrais utiliser fgetc() et fgets() à la place de tes scanf().