[C Multitâche] Récupérer un string sur stdin

Fermé
Mazman Messages postés 4 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 27 décembre 2011 - 27 déc. 2011 à 01:25
 mumberea - 27 déc. 2011 à 16:03
Bonsoir à vous,

Je suis actuellement entrain d'écrire un programme pour un projet en multitâche. Je vous explique brièvement la structure du programme :
-> J'ai un processus père qui lance 2 fils : un serveur d'affichage et un processus de gestion de menu.

C'est au niveau du processus de gestion des menus que j'ai besoin de récupérer les choix de l'utilisateur. C'est aussi à ce niveau que ça coince !

J'affiche bien les menus, puis je demande ce que choisi le user. Pour cela, j'ai utilisé toutes les combines que je connais : scanf, fgetc, getchar... Dans tous les cas, mon processus ne se bloque PAS et n'attend pas que je lui tape qqch au clavier ! Pire encore : j'affiche ce que me retourne les différentes fonctions de lecture de flux et je tombe sur des choses qui varient selon les fonctions...

J'ai donc tenté de flusher stdin en utilisant une boucle while( (c=fgetc(stdin))!='\n' && c != EOF) avant de lire l'entrée standard, mais rien y fait.. Le processus me court-circuite à chaque fois la lecture !

N'ayant plus de cheveux sur la tête car j'ai tout arraché Je me tourne donc vers vos lumières car j'en peux vraiment plus

Merciiii !

1 réponse

pour plus de précision, envoi tous le code. Il faut vérifier tes déclarations de variables.
en attendant, essai avec cette fonction: fgets. Voici son prototype:
char* fgets(char* str, int num, FILE* stream ) où
- str est le tableau qui stockera la chaine que tu saisira
- num est la taille d cette chaine
- stream est le pointeur vers le fichier à lire. Dans ton cas c'est l'entrée du clavier (dont stin)
0