Problème Language C

Résolu
e.eyore Messages postés 121 Statut Membre -  
e.eyore Messages postés 121 Statut Membre -
Bonjour,
J'apprend le C et donc je fait beaucoup de tentative, j'aimerai pourvoir séparer mes "mini codes" lisiblement dans l'invite de commande.
J'ai donc créer cette fonction nommé "ligne".

int ligne(int *nbr); =>header

int ligne(int *nbr)
{
printf("___________%d___________\n\n", *nbr);
*nbr=*nbr+1;
}
=> ccp
(j'ai avant introduit int w=0 dans mon main)
je pose dans main
ligne(&w);

afin que lorsque je la marque la première fois il me face ___________0___________ la seconde fois que je lutilise ___________1___________ la 3ème ___________2___________
au final :
___________0___________
programme0
___________1___________
programme1
___________2___________
programme2 ...etc

Le problème c'est que le nombre reste bloqué à 0, j'ai beau chercher je ne comprend pas pourquoi. Pourrize vous detaillez la reponse afin que je comprenne comment fonctionne le "décompte"

Merci de votre contribution.
Configuration: Windows 7
Firefox 3.5.7

5 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,

    Normalement, ça doit marcher. Il y a sûrement une erreur ailleurs.
    Pourrais-tu poster ton code (juste la partie en question).

    Cdlt,
    0
  2. e.eyore Messages postés 121 Statut Membre 6
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>

    int ligne(int *nbr)
    {
    printf("___________%d___________\n\n", nbr);
    *nbr++;
    }

    int main()
    {

    int w=0;

    ligne(w);
    ligne(w);
    ligne(w);
    ligne(w);
    ligne(w);

    system("PAUSE");
    return 0;
    }
    0
  3. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    dans ta fonction tu dois passer l'adresse de w:
    ligne(&w);
    Par ailleurs, ta fonction est de type void car elle ne retourne rien...:
    void ligne(int *nbr)
    {
    printf("___________%d___________\n\n", *nbr);
    *nbr++;
    }
    @+
    0
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Effectivement, il y a plusieurs erreurs.
    Voici ton code avec les corrections apportées :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    
    
    int ligne(int *nbr)
    {
    printf("___________%d___________\n\n", *nbr); /* rajout du pointeur*/
    (*nbr)++; /* rajout des parenthèses sinon tu incrémentes l'adresse mémoire*/
    }
    
    
    int main()
    {
    
    int w=0;
    
    
    ligne(&w); /*rajout de l'esperluette (&) pour passer l'adresse mémoire*/
    ligne(&w); /*rajout de l'esperluette (&) pour passer l'adresse mémoire*/
    ligne(&w); /*rajout de l'esperluette (&) pour passer l'adresse mémoire*/
    ligne(&w); /*rajout de l'esperluette (&) pour passer l'adresse mémoire*/
    ligne(&w); /*rajout de l'esperluette (&) pour passer l'adresse mémoire*/
    
    return 0;
    }
    ~     
    


    Cdlt,
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. e.eyore Messages postés 121 Statut Membre 6
     
    Merci beaucoup, j'ai bien compris mes erreurs, merci a vous.
    @+
    0