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 :

Concaténation d'un pointeur sur char


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Concaténation d'un pointeur sur char
    Bonjour,

    Voici un extrait simplifié de 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    void main (...)
    {
       char *format = "";
       mafonction(format);
    }
     
    void mafonction(char *format)
    {
       if(une condition)
       {
           sprintf(format,"Début de ma chaine")
       }
       else
       {
           switch(i)  //i est une variable que j'ai récupéré avant, mais qui n'est pas importante
          {
               case 1:
                   sprintf(format,"%s x1", format)
               break;
               case 2:
                   sprintf(format,"%s x2", format)
               break;
               case 3:
                   sprintf(format,"%s x3", format)
               break;
          }
       }
    }
    Je code des dissecteurs wireshark et à chaque fois que je ferme l'application j'ai droit à une pop-up d'erreur disant que "L'instruction à "0xXXXXXX" emploie l'adresse mémoire "0xYYYYYY". La mémoire ne peut pas être "read""
    J'ai bien compris qu'il s'agissait de mon pointeur, mais je ne vois pas trop comment éviter cette erreur. Surtout quand dans un autre fichier j'utilise la même méthode et cela marche très bien.
    Après de nombreuses manipulations j'en suis arrivé à la conclusion que c'est la phase de concaténation qui fait planter, seulement j'ai pour contrainte de ne pas utiliser strcat, du coup je ne vois pas trop comment je peux faire?
    Auriez-vous une idée?
    Merci d'avance

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    En écrivant Tu crées un pointeur sur une zone mémoire non-modifiable : tu n'alloues pas de mémoire, tu en utilises une qui n'est pas destinées à ce que tu veux faire.

    Remplace cette ligne par :

    Les concaténations ne sont pas nettes non plus.
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(format, "%s toto", format);
    Tu devrais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcat(format, " toto");

    EDIT :
    Au passage, main doit être de type ou

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Décidément, encore toi qui me donne LE bon conseil et très rapidement d'ailleurs.
    Je venais tout juste de trouver la solution alors que cela fait deux jours que je suis dessus.

    Du coup ca vaut presque le coup de supprimer mon topic vu qu'il y en a un pas très loin que je n'avais pas trouvé directement. (surement a cause des mots que j'ai mis dans ma recherche)

    Bref merci bien

    Edit:
    Je ne peux pas utiliser de strcat, cela fait planter wireshark
    Et mon en-tête de main était un exemple (mauvais effectivement), donc pas de soucis a ce niveau

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par Alwik Voir le message
    Je ne peux pas utiliser de strcat, cela fait planter wireshark
    Hum, pas logique ça.
    Tu dois avoir d'autres problèmes cachés.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2009, 11h40
  2. Allocation dynamique: Tableau de pointeur sur char
    Par Anonymouse dans le forum Débuter
    Réponses: 4
    Dernier message: 21/10/2007, 10h57
  3. Réponses: 6
    Dernier message: 02/11/2006, 16h44
  4. [Console] Pointeur sur char
    Par archipel_k dans le forum C
    Réponses: 4
    Dernier message: 04/08/2006, 14h32
  5. Sizeof d'un pointeur sur char ...
    Par Mike888 dans le forum C
    Réponses: 8
    Dernier message: 03/11/2005, 13h04

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