Problème Language C

Résolu/Fermé
e.eyore Messages postés 105 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 17 avril 2010 - 30 janv. 2010 à 16:18
e.eyore Messages postés 105 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 17 avril 2010 - 30 janv. 2010 à 17:57
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.

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
30 janv. 2010 à 16:21
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
e.eyore Messages postés 105 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 17 avril 2010 6
30 janv. 2010 à 16:26
#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
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
30 janv. 2010 à 16:43
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
30 janv. 2010 à 16:44
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
e.eyore Messages postés 105 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 17 avril 2010 6
30 janv. 2010 à 17:57
Merci beaucoup, j'ai bien compris mes erreurs, merci a vous.
@+
0