Petite question pr une meilleur visibilité

Signaler
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008
-
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008
-
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

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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)
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

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
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

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
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008

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
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

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
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
shirah3i >

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

et pas

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

ne fait jamais fflush(stdin);
Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

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
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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 ?
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008

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 ++
Messages postés
34
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
6 juillet 2008

merci la j'ai resolu mon prob grace a vos aide...encore merci