1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define LGMAX 100
void fclean(char *s_buffer, FILE *stream);
int main(void)
{
struct enr
{
char nom[21];
char prenom[16];
int age;
char numtel[12];
} ;
struct enr f_enr[LGMAX];
int i=0;
char rep[3]="";
char *p_eof=NULL;
/*while (printf("voulez-vous-continuer ?O/N %c\n",rep),scanf("%c",&rep),rep=='O')*/
do
{
printf("voulez-vous-continuer ?O/N ");
fflush(stdin);
if ((p_eof = fgets(rep, sizeof rep, stdin)) != NULL)
{
/* Après usage de fgets() on vérifie que la saisie n'a pas été
tonquée et, si nécessaire, on nettoie le flux d'entrée standard.
*/
fclean(rep, stdin);
if (tolower((unsigned char) rep[0])=='o')
{
printf("While %c\n", rep[0]);
}
}
}
while (tolower((unsigned char) rep[0]) != 'n' && p_eof != NULL);
return EXIT_SUCCESS;
/* Vérifie que la saisie avec fgets() n'a pas été tronquée. Si tel est le cas.
le caractère de fin de ligne est remplacé par le caractère nul. Sinon, le
tampon du flux d'entrée stream est nettoyé.
*/
void fclean(char *s_buffer, FILE *stream)
{
if (s_buffer != NULL)
{
/* On teste la présence du caractère de fin de ligne */
char *pc = strchr(s_buffer, '\n');
if (pc != NULL)
{
/* La saisie est complète: on remplace '\n' par '\0' */
*pc = '\0';
}
else /* La saisie a été tronquée: on vide le tampon de stdin */
{
int c;
/* fgetc lit le caractère courant du flux int fgetc(FILE * flux) */
while ((c = fgetc(stream)) != '\n' && c != EOF)
{
/* Cette boucle ne fait rien */
continue;
}
}
}
} |
Partager