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 :

trouver les positions d'une sous chaine dans une longue chaine


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 trouver les positions d'une sous chaine dans une longue chaine
    bonjour,

    je cherche une fonction ou méthode prédéfinie (je ne sais pas si elle existe ou non) qui retourne les positions d'une sous chaine dans une autre longue?
    par exemple:

    seq: AGCTGTTCGATCGAATCGTGTTCGATTTTCGACTGTGTTCGAACTCGATGTGTTCGACATCAGCTACGCGT
    motf: TGTTCGA
    Il retourne les position suivante: 4, 19, 36, 51.
    Comme on peut trouver une seul position.

    est-ce que ça existe?
    sinon est-ce que vous avez une idée comment faire?
    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    strstr, je crois

  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 leternel Voir le message
    strstr, je crois
    strstr retourne la première occurence et non pas une position.

  4. #4
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    lis bien la doc … strstr retourne un pointeur dans la chaîne pour indiquer où se trouve la première occurence. si tu recommences dans la même chaîne après la première occurence tu trouves les autres. → strstr + boucle

  5. #5
    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
    voici le retour de strstr(). d'abord le retour est un char*.
    donc pour mon exemple:
    seq: AGCTGTTCGATCGAATCGTGTTCGATTTTCGACTGTGTTCGAACTCGATGTGTTCGACATCAGCTACGCGT
    motf: TGTTCGA

    elle retourne: TGTTCGATCGAATCGTGTTCGATTTTCGACTGTGTTCGAACTCGATGTGTTCGACATCAGCTACGCGT

    ce n'est pas une position c'est une chaine de caractère.

  6. #6
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    char * est … un pointeur dans la chaîne où on cherche … et avec l'arithmétique des pointeurs on fait ce genre de chose :

    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
    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
      char foin[]="il n'est pas difficile de trouver une aiguille ou des aiguilles dans une botte d'aiguille";
      char aiguille[]="aiguille";
     
     
      printf("positions = ");
      char *position=foin;
      do {
        position=strstr(position, aiguille);
        if (position==NULL)
          puts("");
        else  {
          printf("%td ", position-foin);
          position=position+1;
        }
      } while(position!=NULL);
     
      return 0;
    }

  7. #7
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    une boucle avec strstr me paraît pas mal.

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2012, 20h08
  2. Réponses: 4
    Dernier message: 07/05/2011, 11h50
  3. [RegEx] Remplacement de chaine dans une sous chaine
    Par fpouget dans le forum Langage
    Réponses: 4
    Dernier message: 23/02/2010, 08h49
  4. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  5. recherche d'une chaine dans une sous chaine
    Par claralavraie dans le forum Oracle
    Réponses: 1
    Dernier message: 31/07/2006, 12h00

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