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

Langage C++ Discussion :

[Langage] probleme de pointeur pour la fonction strcat


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut [Langage] probleme de pointeur pour la fonction strcat
    Bonjour,
    je n'arrive pas à trouver une solution à mon probleme pour ma fonction strcat. Je souhaiterai copier un mot que je viens d'extraire d'une chaine dans une autre et il me met 'erreur: access violation"! Je ne comprends pas ce qui cloche.. quelqu'un pourrait il m'aider svp? ce serait tres gentil!
    Je vous mets un bout de mon code (là où ça coince..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char    *pointeur;
    char    *separateur_classe = { " " };     // Le séparateur
    char *historique = NULL;
    pointeur = strtok( NULL, separateur_classe);
    strcpy (historique,pointeur);

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    peut être un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(pointeur != NULL)
       strcpy (historique,pointeur);
    pour te protéger si tu ne trouve pas ton séparateur
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Et si tu esssayais de travailler dirctement avec les bons types

    Je ne sais pas moi (enfin, si, je sais très bien )... par exemple le type string, fourni par le standard (et donc disponible sur tous les compilateurs qui datent d'apres 1998, en gros) dans l'espace de noms std par la simple inclusion du fichier d'en-tête <string> te faciliterait énormément la vie

    En effet, le C++ descend en droite ligne du C, ce qui fait qu'il propose énormément de possibilités qui en sont issues (du C, s'entend ).

    Mais, à coté de cela, il fournit énormément de possibilités qui font bien mieux - et de manière bien plus "sécurisante" - que les possibilités équivalentes du C...

    Le meilleur conseil que l'on puisse donc donner dés le départ (histoire de t'éviter de prendre des mauvaise habitudes que tu aura un mal fou à perdre par la suite ) c'est de directement t'habituer à utiliser de préférences les possibilités propres au C++ plutôt que les possibilités (moins efficaces et plus risquées) issues du C

    Pour t'aider à comprendre l'utilisation de la classe std::string, tu peux déjà commencer par regarder cette page, qui propose une réponse à la plupart des questions que tu pourrais te poser.

    Parmis toutes les questions réponses, cette entrée particulière et cette autre devraient te faciliter énormément la tache pour ce que tu essaye présentement de faire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut
    En fait, je me suis deja protege de cette erreur, j'ai ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (pointeur != NULL)
            {
                //on Cherche les autres separateur
                pointeur = strtok( NULL, separateur_classe);
            }
    donc c'est pas ca le probleme, je pense que le soucis reside dans l'appel de la fonction strcpy...

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je pense que tu te trompes et que le pointeur vaut NULL à un moment et fait planter le strcpy (d'ailleurs, pourquoi tu parles de strcat dans le titre ?)

    ton code doit ressembler à un truc comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    char    *pointeur;
    char    *separateur_classe = { " " };     // Le séparateur
    char *historique = NULL;
       pointeur = strtok( je_ne_sais_pas_quelle_chaine, separateur_classe);
       while (pointeur != NULL)
       {
          //on Cherche les autres separateur
          pointeur = strtok( NULL, separateur_classe);
     
          // et ici, il faut une protection
          if(pointeur != NULL)
             strcpy (historique,pointeur);
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Par défaut
    merci beaucoup, ca marche tres bien grace a toi!
    probleme resolu

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

Discussions similaires

  1. probleme d'algorithme pour une fonction puissance
    Par john_evrest dans le forum Caml
    Réponses: 10
    Dernier message: 25/10/2011, 15h58
  2. Réponses: 0
    Dernier message: 16/12/2008, 20h02
  3. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  4. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  5. autre probleme pour deriver fonction
    Par voyageur dans le forum Mathématiques
    Réponses: 15
    Dernier message: 28/07/2003, 14h37

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