Bonjour,
dans le cadre d'un projet , je dois lire un fichier texte et récupérer certaines informations.
Mon fichier à traiter possède ce format là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
>Sequence 1
cccaaaaccactcaaaccattactcaaaccccaattcccaatatcgtcaa
tcaaacaacggcaacagaactagtaacccgtttaaagataataaaacaaa
>Sequence 2
ttatgggctacacaacatagaagaagaaaaactcacccaacactgcctta
ccaacttaaattttcaggcacccgcctcaggaacccaacaggatacataa
>sequence 3
atcctaccacacatgcaacatcccttccatacataactctaaacctccaa
caaaaattccctttatcatttcttatcgatacaggatccaataactcctt
>Sequence 4
cattgacccagaatctgcaaaccaactagagtgcacaattctaccaacat
ccacttcaattacaacagcattaaatagtttcaaaattgaagaaaaggca
atattcccaatgccacccgagttcaaaaccgaaggtcaaattaccctact
Je lis une première fois mon fichier afin de compter le nombre de séquences qu'il contient ( je compte les lignes commençant par >).Puis je ferme le fichiers. Je créé un tableau de chaines de caractères ayant la taille nécessaire. Je réouvre mon fichier et je récupère que les lignes différentes de >.... et je les stocke dans mon tableau.
Le problème c'est je ne peux pas réouvrir une seconde fois mon fichier, et cela même si je l'ai bien fermé. J'ai une erreur d'exécution " segmentation fault" ou alors "bus error" ( je l'ai testé sous un autre pc).
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <string.h>
/* Nom : lecturefasta.c */
/* Date  : 12 octobre 2006 */
/* But : lecture d'un fichier fasta et récupération des séquences */
 
main(){
FILE* fichier_entree;
char* ligne; 
char* sequence="";
/* initialisation de la séquence */
 
int nbseq=0;
/* Ouverture en lecture seulement du fichier à traiter */
fichier_entree = fopen("fasta.txt","r");
/* Parcours du fichier jusqu'à la fin */
while(!feof(fichier_entree)){
   /* lecture ligne par ligne*/
 
   ligne=fgets(ligne,1000,fichier_entree);
   /* Traitement des lignes si ce n'est pas la fin du fichier */
   if (ligne!=NULL){
   	  /* détection d'une ligne de commetaire */
  	  if(strchr(ligne,'>')!=NULL){
	      nbseq++;
          printf("Ligne de commentaire\n");	
      }else{
	      printf("Séquence\n");
      }
   }
   //printf("ligne : %s \n",ligne);
}
printf("Le fichier contient %d sequence\n",nbseq);
/* Fermeture du fichier */
fclose(fichier_entree);
  nbseq=0;
/* Ouverture en lecture seulement du fichier à traiter */
fichier_entree = fopen("fasta.txt","r");
/* Parcours du fichier jusqu'à la fin */
while(!feof(fichier_entree)){
   /* lecture ligne par ligne*/
 
   ligne=fgets(ligne,1000,fichier_entree);
   /* Traitement des lignes si ce n'est pas la fin du fichier */
   if (ligne!=NULL){
   	  /* détection d'une ligne de commetaire */
  	  if(strchr(ligne,'>')!=NULL){
	      nbseq++;
          printf("Ligne de commentaire\n");	
      }else{
	      printf("Séquence\n");
      }
   }
   //printf("ligne : %s \n",ligne);
}
printf("Le fichier contient %d sequence\n",nbseq);
/* Fermeture du fichier */
fclose(fichier_entree);	 
}
ce code ne récupère pas les séquences à la deuxième lecture, c'est juste un fichier test qui fait deux lecture à suite.
Si je fais une seule lecture tout fonctionne correctement , enfin chez moi , mais deux lecture de fichiers à la suite non ...

pouvez vous me dire pourquoi et comment résoudre ce problème?
merdi d'avance.