Bonjour, alors voilà je bloque sur un truc sûrement très idiot, mais je ne vois pas d'où peut provenir mon erreur. De mon malloc peut-être ? Ceci étant le premier code que je pond avec les fonctions malloc et free, ça me parait plus que vraisemblable. Donc avant de vous balancer les lignes de codes, je m'explique :
Mon programme doit simplement me ressortir les informations donnés à l'execution de celui-ci. Par exemple si je l'execute avec "./a.out la li", il me ressort "./a.out\nla\nli".
Voici le code :
Voilà. Au début j'ai aussi pensé que mon erreur pouvait venir de mon "my_putstr()", mais j'ai essayé avec "my_putstr("Salut\nCaVa")", et tout m'est ressorti...
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 #include <stdlib.h> char *sum_params(char argc, char **argv) { char *dest; int strlen; int i; int j; int o; strlen = 1; i = 0; j = 0; o = 0; while (i < argc) { strlen = strlen + my_strlen(argv[i]) + 1; i++; } i = 0; dest = malloc(sizeof(char) * strlen); free(dest); while (o < strlen) { dest[o] = argv[j][i]; //my_putchar(dest[o]); i++; o++; if (i > my_strlen(argv[j])) { dest[o] = '\n'; //my_putchar(dest[o]); o++; j++; i = 0; } } //my_putstr(dest); return (dest); } int main(int ac, char **av) { my_putstr(sum_params(ac, av)); my_putchar('\n'); return (0); }
Merci d'avance pour vos réponses!
EDIT : J'ai aussi essayer de voir si ma chaine de caractère fonctionnait bien, et si ma boucle faisait de même, j'ai donc mis mes "my_putchar(dest[o])" dans la boucle, le plus étrange (enfin pour moi) c'est que ça m'a bien ressorti tous les caractères manquant à la fin...
EDIT' : J'ai même tenté de voir si mon int strlen, utilisé dans mon malloc() était correct, et il l'est ! Je ne comprends vraiment pas là
EDIT'' : Ne faites pas attention au "my_" devant strlen(), et putchar() et putstr(), c'est juste que j'utilise ma propre bibliothèque, pédagogiquement, c'est bien plus interessant d'utilisé ses propres fonctions. Vous devez simplement savoir que putstr() me ressort un string sur le terminal, et putchar(), un unique caractère. Même si ça semble évident, je le précise, on ne sait jamais...
Partager