Bonsoir

J'essaye de faire un programme tout bidon qui prend un pointeur(8x) et me donne ca valeur j'ai réussis avec ma fonction putnbr (voir les commentaire dans le code)
tout fonctionne mais voila j'essaye de l'appeler avec printf et la j'ai des warning ainsi qu'une valeur negative -1392384820 qui s'affiche a la place du résultat attendu même en essayant de comprendre les warning mais j'ai du mal si quelqu'un peut m'éclaircir la situation ca serait cool

Voici le code

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
55
56
57
58
59
60
 
 
#include <unistd.h>
#include <stdio.h>
 
void ft_putchar(char c)
{
    write(1, &c, 1);
}
void    ft_putnbr(int nb)
{
   if (nb < 0)
   {
       ft_putchar('-');
       nb = -nb;
   }
   if (nb >= 0 && nb <= 9)
   {
    ft_putchar(nb + '0');
   }
    if (nb >= 10)
    {
        ft_putnbr(nb / 10);
        ft_putnbr(nb % 10);
    }
 
}
void    ft_ultimate_ft(int *********nbr)
{
    *********nbr = 42;
    //ft_putnbr(*********nbr);
}
 
int main()
{
    int		a;
	int		*ptr;
	int		**ptr2;
	int		***ptr3;
	int		****ptr4;
	int		*****ptr5;
	int		******ptr6;
	int		*******ptr7;
	int		********ptr8;
	int		*********ptr9;
 
        ptr  = &a;
	ptr2 = &ptr;
	ptr3 = &ptr2;
	ptr4 = &ptr3;
	ptr5 = &ptr4;
	ptr6 = &ptr5;
	ptr7 = &ptr6;
	ptr8 = &ptr7;
	ptr9 = &ptr8;
 
    ft_ultimate_ft(&ptr9);
    printf("%d", ptr9);
    //ft_putnbr(a);
}
Voici un autre programme tout aussi simple voir plus et la tout fonctionne correctement

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
 
#include <unistd.h>
#include <stdio.h>
 
void ft_putchar(char c)
{
    write(1, &c, 1);
}
void    ft_putnbr(int nb)
{
   if (nb < 0)
   {
       ft_putchar('-');
       nb = -nb;
   }
   if (nb >= 0 && nb <= 9)
   {
    ft_putchar(nb + '0');
   }
    if (nb >= 10)
    {
        ft_putnbr(nb / 10);
        ft_putnbr(nb % 10);
    }
 
}
 
void    ft_swap(int *a, int *b)
{
    int ptr;
 
    ptr = *a;
    *a   = *b;
    *b   = ptr;  
   /*
    ft_putnbr(*a);
    ft_putchar('\n');
    ft_putnbr(*b);
    ft_putchar('\n');
    */
}
 
int main(void)
{
    int a = 10;
    int b = 20;
    ft_swap(&a,&b);
    printf("%d-----%d", a, b);
}
J'appel ft_swap avec comme argument l'adresse de ceux sur quoi pointe A et ainsi que de B qui grace a la fonction ft_swap va alterne les adresse des arguments c'est a dire A et B, mais le principe et le meme je récupère (&) et j'affiche donc je comprend pas que sur mon premier code ca ne fonctionne pas