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 :

Problème passage de variable vers une fonction


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2014
    Messages : 84
    Points : 143
    Points
    143
    Par défaut Problème passage de variable vers une fonction
    Bonjour à tous,

    je débute en C que j'utilise uniquement pour tester mes algorithmes dans le cadre de mes études et j'ai un problème avec les fonctions:

    Pour un exercice je cherche à lire une valeur au clavier et l'enregistrer dans un tableau que j'initialise via une fonction.
    Mon problème c'est que quand j'utilise ma valeur lue au clavier mon code ne fonctionne pas mais si je supprime ma lecture en donnant une valeur à ma variable le code fonctionne.


    Pouvez vous m'aider ou m'expliquer pourquoi mon code ne fonctionne pas si je veux encoder une nouvelle valeur via un scanf.

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #define TAILLE_TAB 10
     
    /*
     * 
     */
     
    void init(int valeur, int *tab, int taille) {
        int compteur;
        for (compteur = 0; compteur < taille; compteur++) {
            tab[compteur] = valeur;
        }
    }
     
    void afficherTableau(int *tab, int taille) {
        int compteur;
        for (compteur = 0; compteur < taille; compteur++) {
            printf("%3d ", tab[compteur]);
        }
        printf("\n");
    }
     
    int main(int argc, char** argv) {
     
    char MSG_ACCUEIL[255] = "Endodez une valeur: ";
    int val;
    // int val = 1;  // avec une valeur fixe le code fonctionne si je supprime le scanf("%d", val); après
    int tab[TAILLE_TAB];
     
    printf("%s", MSG_ACCUEIL);
    scanf("%d", val);
    init(val, tab, TAILLE_TAB);
     
    afficherTableau(tab, TAILLE_TAB);
     
    return (EXIT_SUCCESS);
    }

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    La prochaine fois, pense à mettre ton code entre les balises CODE et /CODE (via le bouton #), ça aide pour la relecture.

    Si tu regardes ton code, tu fais un appel à scanf() :
    Tu lui passes la valeur "val" en paramètre. En réalité, tu ne veux pas faire ça, tu veux lui donner l'adresse de val, pas son contenu, pour que scanf() puisse écrire dedans. L'écritude correcte est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scanf("%d", &val);

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Ton compilateur devrait d'ailleurs émettre un warning (tel que "make pointer from integer without a cast") pour te signaler cette erreur potentielle. Regarde comment activer les warnings (-Wall avec gcc par exemple).

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2014
    Messages : 84
    Points : 143
    Points
    143
    Par défaut
    Bonjour phi1981 et merci pour ton aide.

    Si je change mon code comme tu me suggères de faire ça fonctionne mais la valeur de la variable est copié 10 fois dans mon tableau or ce que je cherche à faire c'est lire 10 fois une valeur pour remplir le tableau via la fonction. EDIT: je précise, est ce que c'est possible d'envoyer 10 valeurs au tableau avec mon scanf dans la fonction main

    Désolé pour le code, j'utiliserais la balise la prochaine fois.

    Merci,
    Ersch

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Donc tu veux que ton programme demande 10 fois à l'utilisateur de saisir une valeur ?
    Est-ce que tu comprends bien la logique du programme que tu as posté, en particulier la fonction init() ? Si oui, tu as tous les éléments pour faire ce que veux.
    Si ce n'est pas le cas, alors tu as besoin de travailler un brin avec un tutoriel C.

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

Discussions similaires

  1. [Débutant] Passage de variable d'une fonction à une autre
    Par scorpions1 dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 15/04/2011, 14h38
  2. [Perl/Tk] problème pour faire passer des variables vers une fonction
    Par seben dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/03/2009, 15h17
  3. [PHP-JS] Passage de variables dans une fonction
    Par Cassiope dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2008, 16h01
  4. Passage de variables dans une fonction
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/07/2006, 17h49
  5. [Debutant]Passage de variable a une fonction
    Par picomz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/06/2006, 19h56

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