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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.