Saisie de caractères "illimitée"
Bonjour à tous,
J'ai essayé de faire un programme permettant une saisie de caractère "illimitée" sur l'entrée standard.
Le comportement me paraît bon, mais je tenais quand même à vous montrer le code pour voir si je n'avais pas commis une bourde (je n'ai pas l'habitude d'utiliser realloc()).
Code:
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
| #include <stdio.h>
#include <stdlib.h>
int main(void)
{
size_t size = 2;
char *s = malloc (size);
if(s != NULL)
{
int c;
int fin = 0;
size_t i = 0;
while((c = getchar()) != '\n' && c != EOF && !fin)
{
if(i >= size-1)
{
size *= 1.5;
char *p_tmp = realloc(s, size);
if(p_tmp != NULL)
{
s = p_tmp;
s[i++] = c;
}
else
{
fin = 1;
}
}
else
{
s[i++] = c;
}
}
s[i] = '\0';
printf("saisie : %s\n", s);
}
else
{
printf("erreur d'allocation memoire\n");
}
return 0;
} |
Voyez-vous des corrections à effectuer ?
Par avance, merci.