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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| #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 */
/* -ed-
main ()
En C99, le type retourne doit etre explicite. */
int main (void)
{
/* -ed- il est preferable d'avoir une definition unique et
separee de ce genre d'info */
#define FNAME "fasta.txt"
#if 0 /* -ed- */
FILE *fichier_entree;
char *ligne;
char *sequence = "";
/* initialisation de la séquence */
int nbseq = 0;
/* -ed- La portee de ces variable est trop grande.
Le code est difficile a lire. */
#endif
/* Ouverture en lecture seulement du fichier à traiter */
FILE *fichier_entree = fopen (FNAME, "r");
/* -ed- fopen() peut echouer */
if (fichier_entree != NULL)
{
/* Parcours du fichier jusqu'à la fin */
/* -ed-
while (!feof (fichier_entree))
{
ligne = fgets (ligne, 1000, fichier_entree);
Ce n'est pas du tout comme ca que l'on lit un fichier texte.
feof() ne fait pas ce que tu crois. Il faut tester la valeur
retournee par la fonction de lecture. C'est aussi ici qu'il
faut definir correctement la ligne et le compteur de sequences.
*/
/* initialisation de la séquence */
int nbseq = 0;
char ligne[1000];
while (fgets (ligne, sizeof ligne, fichier_entree) != NULL)
{
/* Traitement des lignes si ce n'est pas la fin du fichier */
/* -ed- inutile
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");
}
/* -ed- inutile
}
*/
//printf("ligne : %s \n",ligne);
}
printf ("Le fichier contient %d sequence\n", nbseq);
/* Fermeture du fichier */
/* -ed- inutile
fclose (fichier_entree);
*/
nbseq = 0;
/* Ouverture en lecture seulement du fichier à traiter */
/* -ed- inutile
fichier_entree = fopen ("fasta.txt", "r");
*/
/* -ed( ajoute */
rewind (fichier_entree);
/* Parcours du fichier jusqu'à la fin */
/* lecture ligne par ligne */
while (fgets (ligne, sizeof ligne, fichier_entree) != 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);
}
else
{
perror (FNAME);
}
/* -ed- parce que main() retourne un int. */
return 0;
} |
Partager