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 :

Bug de la fonction strcspn?


Sujet :

C

  1. #1
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut Bug de la fonction strcspn?
    Bonsoir,

    Je suis en train de recoder toutes les fonctions de string.h, et j'en suis à la fonction strspn et strcspn.
    Cependant, la fonction strcspn me renvoie un résultat apparemment erroné, et je ne comprends pas pourquoi, je me demande s'il s'agit d'un bug.
    Voici le 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
    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
     
      s1 = "Zébulon, comment vas-tu?";
      s2 = "mon cher ami";
     
      printf("%d\n", strspn(s1, s2));
      printf("%d\n", strcspn(s1, s2));
     
      return (0);
    }
    Ca me retourne 6 alors que ça devrait me retourner 5

    Quelqu'un aurait-il une explication?

    Merci

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Trunks
    Bonsoir,

    Je suis en train de recoder toutes les fonctions de string.h, et j'en suis à la fonction strspn et strcspn.
    Cependant, la fonction strcspn me renvoie un résultat apparemment erroné, et je ne comprends pas pourquoi, je me demande s'il s'agit d'un bug.
    Voici le 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
    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
     
      s1 = "Zébulon, comment vas-tu?";
      s2 = "mon cher ami";
     
      printf("%d\n", strspn(s1, s2));
      printf("%d\n", strcspn(s1, s2));
     
      return (0);
    }
    Ca me retourne 6 alors que ça devrait me retourner 5

    Quelqu'un aurait-il une explication?

    Merci
    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
     
    #include <stdio.h>
    #include <string.h>
     
    int main()
    {
     
      char s1[] = "Zébulon, comment vas-tu?";
      char s2[] = "mon cher ami";
     
      printf("%d\n", strspn(s1, s2));
      printf("%d\n", strcspn(s1, s2));
     
      return 0;
    }
    En sortie j'ai 0 et 5

  3. #3
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Après correction du 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
    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
     
      char *s1 = "Zébulon, comment vas-tu?";
      char *s2 = "mon cher ami";
     
      printf("%d\n", strspn(s1, s2));
      printf("%d\n", strcspn(s1, s2));
     
      return (0);
    }
    j'obtiens 0 et 5

  4. #4
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Bah moi je suis sous ubuntu 5.10 (Breezy Badger) et ça me retourne 0 et 6

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Trunks
    Bah moi je suis sous ubuntu 5.10 (Breezy Badger) et ça me retourne 0 et 6
    Alors je viens d'essayer sous Ubuntu 5.10 et j'obtiens effectivement 0 et 6

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Skyrunner
    Alors je viens d'essayer sous Ubuntu 5.10 et j'obtiens effectivement 0 et 6
    Peut être un gag avec l'accentuée... Pour moi, c'est simple, si on utilise des caractères hors norme, le comportement est indéfini...

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Peut être un gag avec l'accentuée... Pour moi, c'est simple, si on utilise des caractères hors norme, le comportement est indéfini...
    Exactement, je viens de remplacer le é par un z et j'obtiens 5.

  8. #8
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Effectivement, ça vient du caractère accentué ! Il el compte pour double

    Merci Emmanuel et les autres pour votre aide.

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

Discussions similaires

  1. [Dates] Bug avec ma fonction formatage de date
    Par groland dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2007, 16h24
  2. [MySQL] Bug de la fonction mysql_fetch_assoc ?
    Par guidav dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/02/2007, 16h43
  3. Réponses: 15
    Dernier message: 24/01/2007, 23h33
  4. Bug dans la fonction "répéter l'en-tête de groupe sur chaque page"
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 17/10/2006, 09h04
  5. [9i] bug dans la fonction transform XMLType (XSL) ?
    Par Nico57 dans le forum Oracle
    Réponses: 1
    Dernier message: 20/01/2006, 11h11

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