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 :

probleme de pointeur


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut probleme de pointeur
    Bonsoir à tous,

    Voilà mon problème j'ai réaliser une fonction que j'appelle dans un problème jusque là rien de bien méchant. Le problème le voici je n'arrive pas à récuperer la valeur de la fonction voilà le programme :

    la fonction :
    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
    void InitUneDate(int j,int m,int a,int jr,int mr,int ar)
    {
      printf("*******Date de reference*******\n");
      printf("Entrez le jour :");
      scanf("%d",&j);
      printf("Entrez le mois :");
      scanf("%d",&m);
      printf ("taper votre annee :");
      scanf("%d",&a);
      printf("\n");
      printf("*******Date rechercher*********\n");
      printf("Entrez le jour :");
      scanf("%d",&jr);
      printf("Entrez le mois :");
      scanf("%d",&mr);
      printf ("taper votre annee :");
      scanf("%d",&ar);
      printf("\n");
    }
    le programme :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void InitUneDate(int j,int m,int a,int jr,int mr,int ar);
    int main(int argc, char *argv[])
    {
    int j,m,a,test,jr,mr,ar;
     
      InitUneDate(j,m,a,jr,mr,ar);
      printf("annee :%d",*a);
     
      system("pause");
      return 0;
    }
    Ce programme est un test j'essaye de récuperer la valeur de l'annee mais il m'indique une erreur et je n'arrive pas à determiner pourquoi mais surtout je doute de l'utilisation du pointeur !
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Hio,

    Tu es sûr d'avoir lu un cours/livre de C, même basique ?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    le C passe les arguments par copie...

    Si tu veux que les valeurs ressortent, il faut passer des pointeurs....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      InitUneDate(&j,&m,&a,&jr,&mr,&ar);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void InitUneDate(int *j,int *m,int *a,int *jr,int *mr,int *ar)
    {
      printf("*******Date de reference*******\n");
      printf("Entrez le jour :");
      scanf("%d",  j);

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par masterix59 Voir le message
    ...mais surtout je doute de l'utilisation du pointeur !
    Tu fais bien de douter !!!

    Regarde ces deux exemples suivants. Essaye de comprendre ce qu'il se passe puis adapte ton programme en conséquence

    Exemple 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void fct(int n)
    {
        n=12;
        printf("Dans fct: n=%d\n", n);
    }
     
    int main()
    {
        int n=5;
        printf("Avant fct: n=%d\n", n);
        fct(n);
        printf("Après fct: n=%d\n", n);
    }
    Exemple 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void fct(int *pt)
    {
        *pt=12;
        printf("Dans fct: *pt=%d\n", *pt);
    }
     
    int main()
    {
        int n=5;
        printf("Avant fct: n=%d\n", n);
        fct(&n);
        printf("Après fct: n=%d\n", n);
    }
    Citation Envoyé par droggo Voir le message
    Tu es sûr d'avoir lu un cours/livre de C, même basique ?
    La question est cruelle mais quand on te vois bazarder des étoiles un petit peu "au hasard" en espérant que ça tombera juste, on peut effectivement se le demander...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Effectivement les pointeurs n'ont pas encore était aborder en cours mais j'ai voulu voir ce que c'était mais j'ai des difficultés à comprendre.

    si j'ai bien compris alors dans l'exemple 1 :
    dans le main:
    le premier printf vaut 5
    et le deuxieme vaut 5.

    alors que dans l'exemple 2:
    le premier printf vaut 5
    le deuxieme printf vaut 12

    je croit comprendre un peu mieux merci !
    merci à tous j'apprend et s'en faisant des erreurs qu'on apprend donc j'aurais le mérite d'avoir essayer.

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

Discussions similaires

  1. probleme de pointeur ....
    Par berg dans le forum C
    Réponses: 6
    Dernier message: 12/01/2006, 22h46
  2. Probleme de pointeur
    Par Naruto_kun dans le forum C
    Réponses: 17
    Dernier message: 14/12/2005, 20h47
  3. Probleme de pointeurs
    Par mickyoun dans le forum C++
    Réponses: 9
    Dernier message: 10/08/2004, 17h15
  4. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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