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 pointeurs C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut Problème pointeurs C
    Bonjour à tous,

    Je débute en C, et je souhaiterai faire une fonction qui compte le nombre de mots compris dans une chaine de caractères.
    Voici mon 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
    int nbMots(char *chaine){
    	int n=0;
    	while(*(chaine++)){
    		while(*chaine==' '){
    			chaine++;
    		}
    		if(*(chaine)!=' '){
    			n++;
    			while(*(chaine)!=' '){
    				chaine++;
    			}
    		}
    	}
    	return n;
    }
    Que j'appelle grâce à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *ch11=strdup("Bonjour comment ca va ?");
    printf("%d\n",nbMots(ch11));
    Malheureusement, et vous le devinez bien, c'est pour ça que je demande votre aide, cette fonction ne marche pas. Voici ce qu'on me dit pour la valeur de chaine :
    CXX0030 : erreur : impossible d'évaluer l'expression

    Je ne sais pas du tout comment m'en sortir, toute aide est la bienvenue. Je suis sous Visual Studio 2010.
    Je vous remercie.

  2. #2
    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
    Salut

    Précise quelle est la ligne concernée par l'erreur. S'il s'agit de strdup, c'est normal : ce n'est pas une fonction standard. Toutefois, tu as un exemple d'implémentation ici : http://www.developpez.net/forums/d44...dup-ca-marche/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    pk utiliser strdup d'ailleurs?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Oui strdup est ici inutile. Je l'avais ajouté un peu par réflexe, au cas où je voudrais mofifier la chaine par la suite. Mais j'ai tenté la fonction sans le strdup, j'obtiens la même erreur...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    j'ai pas vérifié l'exactitude de ta fonction (d'ailleurs, tu risque de prendre les signe de ponctuation pour des mots avec cette fonction), mais par contre le
    chaine++; c'est pas plutot *chaine++ pour faire avancer le pointeur sur la chaine?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    J'ai modifié la place de mes parenthèses dans les tests par ((*chaine)!=' ') mais ca ne change rien.
    Et si je fais (*chaine)++ ça ne va pas déplacer mon pointeur, mais modifier le contenu de mes chaînes.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Merci pour ta réponse.

    La fonction strdup fonctionne très bien. Le programme se compile bien, l'erreur se produit à l'exécution.
    L'erreur cible les lignes 7 et 9, apparemment une erreur avec mon pointeur 'chaine', mais je ne vois absolument pas laquelle.

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

Discussions similaires

  1. Problème: pointeur de fonction à partir d'un namespace
    Par akileaQuébec dans le forum C++
    Réponses: 8
    Dernier message: 09/10/2007, 10h37
  2. Problème Pointeurs d'objets
    Par Julien_C++ dans le forum C++/CLI
    Réponses: 6
    Dernier message: 03/08/2007, 16h00
  3. Problème pointeur de fonction
    Par ired dans le forum C++Builder
    Réponses: 7
    Dernier message: 16/06/2007, 13h24
  4. problème pointeur sur structure
    Par lejohn dans le forum C
    Réponses: 9
    Dernier message: 01/05/2007, 13h17
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17

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