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 :

fonction "strpos" ou équivalente dans la libc stan


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Par défaut fonction "strpos" ou équivalente dans la libc stan
    Bonjour,

    Est-ce qu'il existe une fonction "strpos" ou équivalente dans la libc (ou glibc, peu importe) standard ?
    C'est pas qu'elle soit difficile à écrire mais je suis un peu surpris de ne pas la retrouver : ai-je mal cherché ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Non, au boulot
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Euh, elle est sensée faire quoi cette fonction strpos ?

  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Si c'est comme en PHP, elle retourne la position d'un caractère dans une chaine.
    Je pense qu'on peut bidouiller un peu et faire un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int strpos(char *chaine, char ch)
    {
       char *res = strchr(chaine, ch);
     
       if(res == NULL)
       {
         return -1 ;
       }
     
        return (int)(res-chaine) ;
    }
    Nas'

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 136
    Par défaut
    merci,

    moi j'avais finalement fabriqué ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int strpos(const char * str, char c) {
      int i = 0;
     
      while ((str[i] != '\0') && (str[i] != c))
        i++;
      return (str[i] == '\0') ? -1 : i;
    }
    Je crois que côté optimalité ça devrait être à kif kif non ?
    corrigé après la remarque de drealock, merci

  6. #6
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    À mon avis, strchr est pas mal, mais nécessite de changer ton algo car il retourne un pointeur (et NULL si rien n'est trouvé). Tu peux l'utiliser comme le fait Nasky.

    Le code de Nasky doit marcher, par contre pas le tient sympho si le caractere se trouve en dernière position il te renvoie -1: sort le i++ du test et retourne i (au lieu de i-1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      while ((str[i] != '\0') && (str[i] != c))
          i++;
      return (str[i] == '\0') ? -1 : i;
    }

Discussions similaires

  1. Fonction "get.hist.quote" dans {tseries}..
    Par Jack_dev dans le forum R
    Réponses: 1
    Dernier message: 24/11/2014, 12h57
  2. Passage d'un String PHP dans fonction javascript et quotes
    Par roukgreg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/05/2013, 14h48

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