Mon soucis dans ma ré-allocation dans cet exemple est qu'elle est impossible au delà du deuxième tour. Donc j'en déduis à une erreur de logique de ma part.
Nous devons utiliser deux styles d'écritures des pointeurs.
La première version avec laquelle j'ai des soucis.
Et l'écriture qui semble fonctionner et que je comprends mieux
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
47
48
49
50
51
52
53
54 void exo391b2() { /* déclaration de variable*/ int n,i = 0; int *leptrnumber = NULL, *leptrfirst = NULL; int *test = NULL; int new_taille; system("cls"); leptrnumber = malloc(sizeof(int)); leptrfirst = leptrnumber; printf("\nIntroduire une serie de nombre - 0 est la condition d'arret\n"); do { printf("Le nombre n %2d : ", i + 1); scanf("%d", &n); if (n != 0) { new_taille = (i + 1) * sizeof(int); test = realloc(leptrnumber, new_taille); if (test != NULL) { leptrnumber = test; *leptrnumber = n; leptrnumber = leptrnumber + 1; i++; } else { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } } }while(n != 0); leptrnumber = leptrfirst; for(n = 0; n < i; n ++) { printf("\nLe numero %2d introduit est : %d", n + 1, *leptrnumber); leptrnumber = leptrnumber + 1; } leptrnumber = NULL; test = NULL; free(leptrfirst) ; printf("\n\n"); system("pause"); system("cls"); }
Donc si vous pouviez m'aiguillez à résoudre la première. Je me doute que d'utiliser une boucle à chaque traitement est une méthode fastidieuse mais comme on ne connait pas le nombre de chiffre que l'utilisateur va introduire. Et qu'on sort de notre boucle d'insertion par la valeur introduite 0.
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 void exo391b1() { /* déclaration de variable*/ int n, i = 0; int *leptrnumber = NULL; int *test = NULL; system("cls"); leptrnumber = malloc(sizeof(int)); printf("\nIntroduire une serie de nombre - 0 est la condition d'arret\n"); do { printf("Le nombre n %2d : ", i + 1); scanf("%d", &n); if (n != 0) { test = realloc(leptrnumber, (i + 1) * sizeof(int)); if (test != NULL) { leptrnumber = test ; leptrnumber[i] = n; i = i + 1; } else { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } } }while(n != 0); for(n = 0; n < i; n ++) { printf("\nLe numero %2d introduit est : %d", n + 1, leptrnumber[n]); } printf("\n\n"); system("pause"); system("cls"); }
Partager