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
| #include <stdio.h>
#include <string.h>
#define CHAINES_TAILLE_MAX 20
#define CHAINES_NB 3
static void saisir_ligne(char *tampon, size_t taille, FILE *fp);
void
saisir_chaines(char tab[][CHAINES_TAILLE_MAX], size_t n_lignes)
{
size_t i;
for (i = 0; i < n_lignes ;i++)
{
printf("Entrez la %d%s chaine: ", i+1, (i > 0) ? "ème" : "ère");
fflush(stdout);
saisir_ligne(tab[i], CHAINES_TAILLE_MAX, stdin);
}
}
void
afficher_chaines(char tab[][CHAINES_TAILLE_MAX], size_t n_lignes)
{
size_t i;
for (i = 0; i < n_lignes; i++)
{
puts(tab[i]);
}
}
int main(void)
{
char tableau[CHAINES_NB][CHAINES_TAILLE_MAX] = {{""}};
saisir_chaines(tableau, CHAINES_NB);
afficher_chaines(tableau, CHAINES_NB);
return 0;
}
/* -tc- fonctions destinees a la saisie de ligne */
/* -tc- Elimine de caractere de fin de ligne saisi par fgets() et nettoie le
tampon du flux entrant si necessaire */
static void
fclean(char *tampon, FILE *fp)
{
if (tampon != NULL && fp != NULL)
{
char *pc = strchr(tampon, '\n');
if (pc != NULL)
{
*pc = 0;
}
else
{
int c;
while ((c = fgetc(fp)) != '\n' && c != EOF)
{
}
}
}
}
/* -tc- Permet la saisie securisee d'une ligne et vide de tampon du flux
d'entrant si necessaire */
static void
saisir_ligne(char *tampon, size_t taille, FILE *fp)
{
if (tampon != NULL && taille > 1 && fp != NULL)
{
if (fgets(tampon, taille, fp) != NULL)
{
fclean(tampon, fp);
}
}
} |
Partager