chris5874
Messages postés50Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention26 janvier 2007
-
19 janv. 2007 à 20:17
pepsidrinker
Messages postés151Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention15 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:
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;
}
pepsidrinker
Messages postés151Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention15 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...
chris5874
Messages postés50Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention26 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... :'(
chris5874
Messages postés50Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention26 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
pepsidrinker
Messages postés151Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention15 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.
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