Strlen - erreur de segmentation [résolu][C] - C - Programmation
Marsh Posté le 19-03-2009 à 10:25:31
Tu empiles n * 81 caractères dans seq. Il faut que tu ajoutes un contrôle pour t'assurer que la somme des tailles ajoutées ne dépasse pas la capacité maximum de seq.
De plus, cette ligne-ci ne sert à rien :
tmpseq[strlen(tmpseq)-1]='\0';
Pour deux raisons :
1. strlen() retourne la taille d'un tableau de char en comptant le nombre de char jusqu'à trouver un '\0'. Donc, utiliser strlen() sur une chaîne pour ajouter un '\0' mène forcément à une catastrophe.
2. fgets() ajoute de toute façon un '\0' en fin de chaîne, tu es donc tranquille de ce côté-là.
Marsh Posté le 19-03-2009 à 10:35:12
Le problème est qu'il y a des sauts de ligne dans le fichier contenant la séquence et ces sauts ne doivent pas être comptabilisés dans le compte final du nombre de caractères de cette séquence.
Enfin merci je vais méditer sur le reste de tes conseils
Marsh Posté le 19-03-2009 à 11:08:27
Aussi ouais, je n'avais pas fait attention.
De plus, évite scanf(). Utilise fgets(), beaucoup plus simple d'utilisation (scanf est vraiment pas une fonction simple à utiliser correctement).
Marsh Posté le 19-03-2009 à 10:03:04
Salut,
Je débute en C (et en programmation tout court) donc soyez indulgents.
Je cherche à lire ce fichier: http://abiboom.snv.jussieu.fr/Linf [...] C_IlvI.adn
La première ligne est le commentaire com et le reste une séquence nucléotidique seq. Je souhaite obtenir la longueur en nucléotides de cette séquence.
J'ai donc pondu le code suivant:
Apparemment ça bloque à la ligne 31:
s.lg=strlen(s.seq);
La séquence s'affiche correctement et je ne vois pas pourquoi l'exécutable (ça compile correctement) me renvoit un segmentation fault. Si vous avez une idée...
Message édité par Profil supprimé le 19-03-2009 à 11:06:19