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()).
Voyez-vous des corrections à effectuer ?
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; }
Par avance, merci.
Partager