Intruction zappee !

chris5874 Messages postés 50 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 26 janvier 2007 - 19 janv. 2007 à 20:17
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009 - 21 janv. 2007 à 16:12
Bonjour,
j'ai commence un petit programme en C. Malheureusement etant debutant, j'ai du surement negliger un detail car une instruction qui est censee attendre une entree tapee au clavier est tout simplement zappee...
je precise que j'utilise gets pour capter une entree au clavier, ne sachant pas si l'entree comporte un espace ou non(donc non compatible avec scanf)
Je vous remercie d'avance pour toute l'aide que vous pourrez m'apporter.
ci dessous le code:

#include <stdio.h>
#include <time.h>

void ajout_produit(void)
{
    char cat_produit[50];
    char nom_produit[50];
    char code_barre[50];

    puts("menu ajout de produit\n");
    printf("veuillez entrer la categorie du produit:\n");
    sleep(1);
    gets(&cat_produit);
    puts("veuillez entrer le nom du produit");
    gets(&nom_produit);
    puts("veuillez scanner le code barre du produit");
    gets(&code_barre);
    puts("recapitulatif des informations");
    printf("categorie : ");
    puts(cat_produit);
    printf("nom du produit : ");
    puts(nom_produit);
    printf("code barre scanne : ");
    puts(code_barre);
    return;
}

void menu(void)
{
    int choix=0;
    puts("menu principal\n");
    puts("1.ajouter un produit");
    puts("2.effectuer une recherche d'un produit\n");
    puts("quelle action desirez vous effectuer?\n");
    scanf("%d",&choix);
    printf("vous avez choisi ");
    /*printf("%d",choix);*/
    if (choix==1)
    {
        printf("d'ajouter un produit\n");
        ajout_produit();
    }
    else
    {
        printf("de rechercher un produit...bon courage!\n");
    }
    return;
}

main(void)
{
    puts("debut du programme\n");
    puts("chargement du menu\n");
    menu();
    puts("fin du prog\n");
    return 0;
}

5 réponses

pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
19 janv. 2007 à 20:28
Dans tout ce qui touche au string de type CHAR, tu n'a pas a mettre l'opérateur d'addresse avant le nom du buffer.
et donc, pas de 'gets(&cat_produit);' mais bien 'gets(cat_produit);' seulement...

Pepsidrinker
0
chris5874 Messages postés 50 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 26 janvier 2007
19 janv. 2007 à 20:57
merci de ta reponse
en fait, grace a ton aide, j'ai reussi a supprimer des warning de compilation, par contre l'instruction gets est toujours malheureusement zappee... :'(
0
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
20 janv. 2007 à 21:11
Essais CIN. (et cin.ignore()).
char buffer1[255];
cin>>buffer1;

Pepsidrinker
0
chris5874 Messages postés 50 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 26 janvier 2007
21 janv. 2007 à 08:34
rebonjour,
j'ai tente de convertir ma source en c++ et utiliser cin, mais il semblerai que cin fasse exactement la meme chose que scanf (c'est a dire des qu'il y a un espace la fonction arrete d'enregistrer la saisie utilisateur
je te remercie pour ton aide.
0

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

Posez votre question
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
21 janv. 2007 à 16:12
CIN est une fonction (en fait c'est une variable, c'est l'opérateur >> la fonction) d'input, et donc, sans certaine fonction (donce celle de prendre une chaine avec les espace.)
Le fonction cin.getline() sert justement à  sa.

Voici comment l'utiliser:
char buff[255];
cin.getline(buff,254,'\n');

parametre 1 : ton buffer de type char
parametre 2 : le nombre de caractère a mettre dans le buffer
parametre 3: un charactère d'arrêt.  La fonction arrete de lire et on passe a l'autre instruction du code à la rencontre de se caractère.
'\n' est excellent dans ce cas, car c'est justement quand l'utilisateur tape ENTER que la fonction se termine.
Voila, tu a maintenant toute tes espace et de mon coté, rien ne squippe.
Pepsidrinker
0
Rejoignez-nous