IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

recuperer une chaine de caractère avant l'espace


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut recuperer une chaine de caractère avant l'espace
    bonjour,
    J'ai un fichier de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >id_seq01 description1ofSEQUENCE
    GTCGTCCAATCGACTACGATCACGTTTTTTTTTTTTTTTTTTTACGACTCGCATCAGCATAAAAAAAAAAAAAA
    >id_seq02 description2ofSEQUENCE
    GGCTCTATTATATACATCATCTCTTTTTTTTTTTTTTACTACATAAAAAAAAAAAAAAACCCTACT
    >id_seq03 description3ofSEQUENCE
    TTTTTTTTTTCGATCAGCTATAAAAAAAAAAAAAAAAAAAAAAACGCTACGACTCACGTGGGGGGGGGGGGG
    >id_seq04 description4ofSEQUENCE
    TTCGATCAGCTATAAAAAAAAAAAAATTTGAAAACACGCATCGTTTACA
    Je veux récupérer juste la chaine "id_seq01" ou "id_seq02",... c'est à dire "id_seqX".
    J'ai fait un problème qui ne marche pas avec l'idée de strtok().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(fgets(chaine,TAILLE_MAX, fichier1)!= NULL){
            delim=strtok(chaine," ");
                printf("%s\n",delim);
              fgets(chaine,TAILLE_MAX, fichier1); // pour sauter la longue séquence
    }
    est-ce que vous pouvez m'aider?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 499
    Par défaut
    Bonjour,

    « Ça ne marche pas » n'est pas une description valable d'un problème. Essaie d'être plus précis.
    À part cela, pour faire ce genre de traitement (surtout en bioinformatique), on utilise plutôt les expressions régulières avec un langage de script, voire des outils en ligne de commande comme sed.

    Si tu veux le faire en C avec la bibliothèque standard, en l'état, ça devrait fonctionner, à condition que ton programme reste bien synchronisé avec le contenu de ton fichier. Si pour une raison ou une autre il y a une ligne en plus ou en moins ailleurs dans ton fichier, ton programme essaiera ensuite d'analyser la mauvaise ligne jusqu'à la fin du fichier.

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Bonjour,

    « Ça ne marche pas » n'est pas une description valable d'un problème. Essaie d'être plus précis.
    À part cela, pour faire ce genre de traitement (surtout en bioinformatique), on utilise plutôt les expressions régulières avec un langage de script, voire des outils en ligne de commande comme sed.

    Si tu veux le faire en C avec la bibliothèque standard, en l'état, ça devrait fonctionner, à condition que ton programme reste bien synchronisé avec le contenu de ton fichier. Si pour une raison ou une autre il y a une ligne en plus ou en moins ailleurs dans ton fichier, ton programme essaiera ensuite d'analyser la mauvaise ligne jusqu'à la fin du fichier.
    moi je veux en C.
    en plus je ne veux obtenir que l'entête de la séquence. Le problème c'est qu'il prend les séquences aussi!!
    je ne sais pas pourquoi.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 499
    Par défaut
    Comme je te l'ai dit, normalement, ça marche en l'état. Ça se confirme en essayant chez moi avec ton extrait de code et ton fichier de séquences :

    $ ./programme < fichier.txt
    >id_seq01
    >id_seq02
    >id_seq03
    >id_seq04
    Si tu n'obtiens pas de bons résultats, c'est que soit ton fichier n'a pas été correctement ouvert en amont, soit le contenu entier du fichier de séquences varie à un certain moment, ce qui désynchronise ta lecture.

  5. #5
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Utilise plutôt sscanf avec le format %s pour récupérer le contenu d'une chaîne jusqu'au premier caractère « blanc ».

    Cela dit, je rejoins totalement les conseils qui t'ont été donnés par Obsidian : il existe d'innombrables outils d'analyse de texte bien plus complets et fiables qu'un programme C écrit « from scratch » (tr, grep, sed, perl...).

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut
    oui ça marche.
    C'est un problème du fichier.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 30
    Dernier message: 09/08/2011, 15h36
  2. récupérer une chaine de caractères avec des espaces
    Par doubiste_59 dans le forum Langage
    Réponses: 4
    Dernier message: 20/07/2010, 15h17
  3. Réponses: 2
    Dernier message: 14/11/2007, 09h56
  4. Comment concaténer une chaine de caractères avec un espace ?
    Par blanchonvincent dans le forum MATLAB
    Réponses: 6
    Dernier message: 07/04/2007, 21h53
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo