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
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* -TC- Cette fonction est a utiliser en complement de fgets() pour detecter
eliminer le caractere de fin de ligne saisi pat cette dernière et purger
le flux d'entree standard si necessaire */
void fclean(char *tampoon, FILE *flux);
int main(void)
{
/* -TC- Ce declare un tampon d'une longueur suffisante pour la saisie */
char tampon[20] = "";
char *pend = NULL;
int num;
do
{
printf("Donnez votre num: ");
/* -TC- Cette fonction permet de purger le tampon du flux de sortie standard
et de forcer l'affichage de "Donnez votre nom: " */
fflush(stdout);
fgets(tampon, sizeof tampon, stdin);
fclean(tampon, stdin);
num = strtol(tampon, &pend, 0);
} while (*pend != 0);
printf("Votre num est: %d\n", num);
return 0;
}
void fclean(char *tampon, FILE *flux)
{
/* On cherche si le caractere '\n' est present */
char *pc = strchr(tampon, '\n');
if (pc != NULL)
{
/* -TC- Il est present: la saisie est donc complete */
/* OPTIONNEL: On remplece de caractere de fin de ligne par un caractere
nul */
*pc = 0;
}
else
{ /* -TC- '\n' ne peut etre trouve' -> la saisie a ete tronquee et il reste
des caracteres sur le flux d'entree standard */
int c;
/* -TC- On affiche un message d'avertissement*/
fprintf(stderr, "ATTENTION: La saisie a été tronquée!\n");
/* -TC- On vide le tampon du flux d'entree standard */
while ((c = fgetc(flux)) != '\n' && c != EOF)
{
}
}
} |
Partager