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 74 75 76 77 78 79 80 81 82
|
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NMAX 100
#include <string.h>
int fclean (char *s_buffer, FILE * stream)
{
int err = 0;
if (s_buffer != NULL && stream != NULL)
{
char *pc = strchr (s_buffer, '\n');
if (pc != NULL) /* La saisie n'a pas ete tronquee */
{
/* On remplace '\n' par le caractere nul '\0' */
*pc = 0;
}
else
{
/* La saisie a ete tronquee, on purge le flux d'entree */
int c;
while ((c = fgetc (stream)) != '\n' && c != EOF)
{
}
err = 1;
}
}
return err;
}
void saisieChaine (char *chaine, size_t size)
{
int saisie_OK = 0;
while (saisie_OK == 0)
{
fgets (chaine, size, stdin);
{
saisie_OK = !fclean (chaine, stdin);
if (!saisie_OK)
{
fprintf (stderr, "Saisie trop longue, recommencez\n");
}
}
}
}
int main (void)
{
char nomsPays[NMAX][128];
int nbPays;
// Saisie des pays
do
{
char s[32];
printf ("Nombre de pays : ");
saisieChaine (s, sizeof s);
nbPays = atoi (s); //Convertit la chaine entree au clavier en entier
}
while (nbPays < 2 || nbPays > NMAX);
printf ("Entrez le nom des pays :\n");
{
int i;
for (i = 0; i < nbPays; i++)
{
printf ("- ");
saisieChaine (nomsPays[i], sizeof nomsPays[i]);
}
for (i = 0; i < nbPays; i++)
{
printf ("nomsPays[%d]=%s\n", i, nomsPays[i]);
}
}
return 0;
} |
Partager