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 linx gcc


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Bug linx gcc
    salut ,
    je suis entrein d'ecrire un programme en c ,le probleme c'est que syntaxiquement tous est correcte mais sans printf (qui est pour moi inutile ) mon programme ne fonctionne pas correctement
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    void  decaler_gauche(char **m_a,int compteur){
     
    int comp;
    char tmp[20];
     
    for (comp=0;comp < strlen(*m_a)-compteur;comp++)
      {
        tmp[comp]=(*m_a)[comp+compteur];
      }
    tmp[comp]='\0';
    //printf(" %s \n",tmp);   c'est ce printf qui resoud le probleme mais je ne le veut pas
    *m_a=tmp;
     
    }
    int suivant(char **m_a){
     
    int longeur,compteur,v_retour,position=0;
    char tmp[20],*s;
     
    int state=0;
    longeur=strlen(*m_a);
    for(compteur=0;compteur<longeur;compteur++)
      {
       if(isdigit((*m_a)[compteur]))
         {
           tmp[compteur]=(*m_a)[compteur];
           state=1;
         }
       else
          { 
           if((*m_a)[compteur]=='.'&& state==1)
               {
                 tmp[compteur]='\0';
                 decaler_gauche(m_a,compteur+1);
                return(4);
               }
               else
                {
                 return(-1);
     
                }
     
          }  
       }
     
    }
    int main(){
    char *s="1.55.8.9.1.2";
    int i;
    i=suivant(&s);
    printf("la chaine vaut  %s \n",s);//sans le printf  dans la fct decaler_gauche() ce printf //n'affiche pas la vrai valeur de s
     
    }
    merci d'avance.

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par eyeofthetiger Voir le message
    salut ,
    je suis entrein d'ecrire un programme en c ,le probleme c'est que syntaxiquement tous est correcte mais sans printf (qui est pour moi inutile ) mon programme ne fonctionne pas correctement
    tmp est une variable locale dont tu affecte l'adresse à s. Lorsque tu quitte la fonction tmp n'existe plus et la mémoire correspondante peut être réutiliseée.
    L'adresse contenu dans s n'est donc plus valide, il y a un comportement indéfini. C'est exactement le même problème que si tu avais mis un return tmp;.

    Pourquoi modifies-tu l'adresse contenue dans s pour faire ce type de traitement ? Généralement on passe plutôt un tableau et la taille correspondante qui contiendra la chaîne résultante (ce tableau pouvant être celui qui contient la chaîne initiale).

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

Discussions similaires

  1. Réponses: 40
    Dernier message: 21/08/2014, 15h35
  2. Réponses: 4
    Dernier message: 15/05/2013, 09h52
  3. Bug gcc sur STL?
    Par asbxl dans le forum SL & STL
    Réponses: 4
    Dernier message: 12/02/2009, 00h02
  4. bug de GCC ou de MSVC?
    Par screetch dans le forum C++
    Réponses: 3
    Dernier message: 05/10/2008, 17h31
  5. [gcc][bug?] warning: will never be executed
    Par PRomu@ld dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 22/08/2006, 16h58

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