Petite question pr une meilleur visibilité

anek971 Messages postés 34 Date d'inscription dimanche 23 novembre 2003 Statut Membre Dernière intervention 6 juillet 2008 - 16 mai 2004 à 17:42
anek971 Messages postés 34 Date d'inscription dimanche 23 novembre 2003 Statut Membre Dernière intervention 6 juillet 2008 - 20 mai 2004 à 17:23
Bonjour a tous
Enfaite je voudrais savoir en mode console comment on fait pr que par exemple le prog :
#include <stdio.h>
int main(void)
{
int choix;
do
{
printf("Les choix\n");
printf(" 1.ajouter.\n");
printf(" 2.afficher.\n");
printf(" 0.Pour quitter.\n");
printf("Votre choix: ");
scanf("%d",&choix);
switch(choix)
{ case 1: blabla;
break;
case 2:blabla;
break;
}
}
while(choix!=0);
}
Pr k'on ait pas a chak fois l'affichage a la suite de ce ki est dans les printf,genre les ecrire je crois dans une nouvelle fenetre en mode console tjs.
Puis un deuxième points j'ai zieuter sur le prog de klk'1 ki proposait la gestion du personnel , et je souhaiterai comme lui pr choisir ne pas avoir a tapez un chiffre mais parcourir les choix a l'aide des touches directionneles et une fois dessus on tape entrer et c bon ca a appelle la fonction correspondante.
merci d'avance..

10 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
16 mai 2004 à 18:00
suffit d'effacer la fenetre, mais ca depend de l'os, sous win tu pe faire ca en win32, ya des sources qui redefinisse la fonction clrscr() de borland (cherche sconio ou econio)
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
18 mai 2004 à 11:48
Pour ton affichage tu peux essayer de faire un truc dans ce genre là si t'es sous win:
do
{
printf(...);
scanf("%i",&choix);
fflush(stdin); //si tu l'oublies tu risques d'avoir des pb
system("cls"); //efface le contenu de la console
switch(choix)
{
....
}
}
while(...);

si t'es sous linux (chuis pas du tout expert donc ...)
essaye un truc du genre system("clear");

Bonne prog

SHIRAH
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
18 mai 2004 à 11:48
Pour ton affichage tu peux essayer de faire un truc dans ce genre là si t'es sous win:
do
{
printf(...);
scanf("%i",&choix);
fflush(stdin); //si tu l'oublies tu risques d'avoir des pb
system("cls"); //efface le contenu de la console
switch(choix)
{
....
}
}
while(...);

si t'es sous linux (chuis pas du tout expert donc ...)
essaye un truc du genre system("clear");

Bonne prog

SHIRAH
0
anek971 Messages postés 34 Date d'inscription dimanche 23 novembre 2003 Statut Membre Dernière intervention 6 juillet 2008
18 mai 2004 à 13:44
Merci bcp pr ton aide mais la j'ai un prb sur mon prog parceke enfaite je vx creer un carnet d'adresse ou cette fois on ecrit les données dans un fichier text avec fprintf et 'kon puisse relire le nom grace a fscanf bah le prob now que j'ai rajouté ca a mon prog qd je vx entrer le nom comme ya plein d'info ca passe bien mais qd je veux afficher ca affiche mais a une vitesse et enfaite après ca m'efface tt avt ke j'ai le tps de voir koi ke ce soit.
je ne met pas tout mon prog parceke je souhaitais le mettre sur le site pr faire style grand informaticien :) mais voici ou ca pose prob now ke j'ai mis ce ke je voulais (effacer tt).
int main (void)
{
struct fiche *p_pers=NULL;
struct fiche *entrer=NULL;
int choix;
do
{
fflush(stdin);
system("cls");
printf("\n ************************ \n");
printf(" * * \n");
printf(" * AGENDAc.VERSION1.6:) * \n");
printf(" * * \n");
printf(" *********************** \n");
printf(" \n \n Vous pouvez: \n");
printf(" 1-ajouter\n");
printf(" 2-enregistrer\n");
printf(" 3-lire\n");
printf(" 4-conseil d'utilisation\n");
printf(" Votre choix: \n");
scanf("%d",&choix);
switch(choix)
{
case 1: ajouter(&p_pers);
break;
case 2:save(p_pers);
break;
case 3:lire();
break;
case 4:conseil();
break;
case 0:quitter(&p_pers);
break;
}
}
while(choix!=0);
}
et merci encore
0

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

Posez votre question
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
18 mai 2004 à 14:29
Dand ta fonction lire(), je suppose que tu fais une boucle qui lit ton fichier ligne par ligne?
Ca doit ressembler à ca:
while(!feof(fichier))
{
printf(.....);
}

maintenant essaye avec ca:
int i = 1;
while(!feof(fichier))
{
printf(.....);
i++;
if(i%15 == 0)
{
printf("\nappuyez sur une touche pour afficher la suite");
getch();
}
}
printf("\nappuyez sur une touche pour retourner au menu");
getch();

Tu devrais avoir l'affichage d'un peu moins d'un écran à la fois et comme ca tu aurais le tps de lire les infos dt tu as besoin!

Bonne prog à toi!

SHIRAH
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 mai 2004 à 19:46
shirah3i >

printf(...);
fflush(stdout);
scanf("%i",&choix);

et pas

printf(...);
scanf("%i",&choix);
fflush(stdin);

ne fait jamais fflush(stdin);
0
shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
19 mai 2004 à 14:11
DJL> le fflush(stdin) se fait très bien après ou avant un scanf pcq quand tu as un scanf dans une boucle et que tu vides pas le tapon d'entrée ton scanf va toujours prendre la meme valeur et si tu n'entres pas la valeur qui va te permettre de sortir de ta boucle tu vas boucler sans fin!

SHIRAH
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 mai 2004 à 19:47
fflush(stdin) ne vide pas stdin

le createur du c dit que ca a un comportement indefini, que ca sert a rien, mais peut etre a tu reinventé le c? :D

et me dit pas que tu sais pas vider un inputstream? tu connais EOF ?
0
anek971 Messages postés 34 Date d'inscription dimanche 23 novembre 2003 Statut Membre Dernière intervention 6 juillet 2008
19 mai 2004 à 23:58
Oki merci pr les infos bon pr l'instant je peux pas les tester je suis en pleine periode d'exams :'( si g un autre prob je reposerai une kestion mas merci ++
0
anek971 Messages postés 34 Date d'inscription dimanche 23 novembre 2003 Statut Membre Dernière intervention 6 juillet 2008
20 mai 2004 à 17:23
merci la j'ai resolu mon prob grace a vos aide...encore merci
0
Rejoignez-nous