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 :

Problème avec fonction "strpbrk"


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 42
    Par défaut Problème avec fonction "strpbrk"
    Bonjour à tous,

    Voila j'ai créer un programme utilisant la fonction strpbrk de la bibliothèque <string.h> pour rechercher plusieurs caractères dans une chaine et donner la chaine à partir de ce caractère mais il ne fonctionne pas pourtant tout à l'air bon. Quand je le lance dans code blocks il se lance mais quand je rentre les lettres a chercher il ne se passe rien. Pouvez vous m'aider s'il vous plait?

    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
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    int main(int argc, char *argv[])
    {
        char *suiteChaine = NULL, *UserString = NULL;
     
        printf("Entrez les lettres recherchees: \n");
        scanf("%s", UserString);
     
        suiteChaine = strpbrk("Texte de test", UserString); /*la fonction renvoit l'adresse de la lettre
        trouvée, c'est pourquoi suiteChaine n'est pas un pointeur*/
     
        if (suiteChaine != NULL)
        {
            printf("Voici la fin de la chaine a partir du premier des caracteres trouves : %s", suiteChaine);
        }
     
        return 0;
    }
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        scanf("%s", UserString);
    UserString ne doit pas être un pointeur mais un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char UserString[256]; // ou toute dimension compatible avec le problème

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 42
    Par défaut
    Et pourquoi suiteChaine peut-il l'être alors stp?

    merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Citation Envoyé par Faror Voir le message
    Et pourquoi suiteChaine peut-il l'être alors stp?

    merci
    En fait, ce que voulait dire diogene, c'est que scanf attend une zone mémoire valide. Là, en l'occurrence, une zone mémoire assez grande qui pourra contenir la chaine de caractères saisie. Or, tu envoies à la fonction l'adresse NULL, ce qui va la faire crasher, car elle va écrire à cette adresse là.

    La zone mémoire peut bien entendu être obtenue par allocation dynamique, nécessitant l'utilisation d'un pointeur. Ce qui importe, c'est de ne pas écrire la chaine n'importe où en mémoire, sinon ça crashe.

    Toutefois, pour ton exemple, l'allocation dynamique n'étant pas justifiée, utilise plutôt un tableau classique, en utilisant l'exemple de diogene.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 42
    Par défaut
    Ok, merci beaucoup

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

Discussions similaires

  1. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  2. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  3. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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