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 :

procédure avec paramètre de sortie


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut procédure avec paramètre de sortie
    Bonjour,
    je voudrais faire une procédure avec un paramètre de sortie. J ai procédé de la manière suivante mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int saisie_prix(float prix_du_produit)
    {
    	char char_prix_du_produit[3];
     
    	printf("Entrez le prix\nou tapez 'q' pour quitter\n");
    	do
    	{
    		gets(char_prix_du_produit);
    		if (char_prix_du_produit[0] == 'q') return FALSE;
    	}while ( sscanf(char_prix_du_produit,"%f",&prix_du_produit) != 1 || prix_du_produit > 2 || prix_du_produit <= 0 );
    	return TRUE;
    }
    Il semblerait qu il n y a pas de passage de valeur, dois je faire un passage par adresse ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Ashin Voir le message
    Bonjour,
    Il semblerait qu il n y a pas de passage de valeur, dois je faire un passage par adresse ?
    Oui, passage du paramètre par adresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int saisie_prix(float * prix_du_produit)
    {
    	char char_prix_du_produit[3];
     
    	printf("Entrez le prix\nou tapez 'q' pour quitter\n");
    	do
    	{
    		gets(char_prix_du_produit);
    		if (char_prix_du_produit[0] == 'q') return FALSE;
    	}while ( sscanf(char_prix_du_produit,"%f",prix_du_produit) != 1 || prix_du_produit > 2 || prix_du_produit <= 0 );
    	return TRUE;
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    merci medinoc t as résolu mon 2nd probleme et merci ram_0000 pour le premier

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Je ferais comme ça:

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    #ifndef TRUE
    #   define TRUE 1
    #endif
    #ifndef FALSE
    #   define FALSE 0
    #endif
     
    static int
    fclean(char *buffer, FILE *fp)
    {
        int err = 0;
     
        if (buffer != NULL && fp != NULL)
        {
            char *pc = strchr(buffer, '\n');
     
            if (pc != NULL)
            {
                /* -tc- La saisie est complete. On elimine le caractere de fin de
                   ligne saisit par fgets() */
                *pc = 0;
            }
            else
            {
                /* -tc- Erreur: la saisie a ete tronquee */
                int c;
     
                /* -tc- On signale l'erreur et on fait le menage dans le tampon
                   du flux entrant */
                err = 1;
     
                while ((c = fgetc(fp)) != '\n' && c != EOF)
                {
                }
            }
        }
     
        return err;
    }
     
    static int
    saisie_prix(double *prix_du_produit)
    {
        int ret = FALSE;
     
        if (prix_du_produit != NULL)
        {
            char buffer[16] = "";
            char *pend = NULL;
     
            do
            {
                printf("Entrez le prix\nou tapez 'q' pour quitter\n");
                fgets(buffer, sizeof buffer, stdin);
                fclean(buffer, stdin);
                *prix_du_produit = strtod(buffer, &pend);
            }
            while (strcmp(buffer, "q") != 0 &&
                    (*pend != 0 || *prix_du_produit > 2 || *prix_du_produit <= 0));
     
            if (strcmp(buffer, "q") != 0)
            {
                ret = TRUE;
            }
        }
     
        return ret;
    }
     
    int main(void)
    {
        double prix;
        if (saisie_prix(&prix) == TRUE)
        {
            printf("Le prix est %f\n", prix);
        }
        else
        {
            printf("La saisie a ete arretee!\n");
        }
        return 0;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    merci a vous tous, mais si jamais c est une chaine de caractère que je dois passer par adresse

    en reprenant le meme exemple ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int saisie_nom(char *retour_nom_du_produit)
    {
    	char char_nom_du_produit[30];
    	retour_nom_du_produit = char_nom_du_produit;
     
    	fgets(char_nom_du_produit);
    	if (char_nom_du_produit[0] == 'q') return FALSE;
    	return TRUE;
    }
    par contre impossible de récupérer ma chaine dans mon main en faisant comme dans ton tuto

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

Discussions similaires

  1. [SQLEXP2005][TSQL]Procédures avec Paramètres optionnels
    Par hsii04 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/03/2008, 10h50
  2. appel procédure avec paramètres ds fonction
    Par cpattin dans le forum VB.NET
    Réponses: 7
    Dernier message: 14/06/2007, 22h11
  3. Problème procédure avec paramètres
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2007, 10h40
  4. Fonction ou procédure avec paramètres optionnels ?
    Par [Silk] dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 13h55
  5. [Débutant]Procédure avec paramètres entrée / sortie
    Par jeromejanson dans le forum Langage
    Réponses: 13
    Dernier message: 10/10/2005, 08h30

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