Hello, ok je sais il y a la fonction itoa pour ça mais recoder la fonction itoa juste pour change le type de variable c'est pas top top alors existe t-il une façon de faire plus simplement, un simple cast suffirait si je veux afficher 45 en unsigned ? en int ? mais pour ces type comment faire ? long int, long unsigned ? dois-je recoder à chaque fois la fonction itoa ? Merci
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 | #define SIZE 11 static char *getnbr(int n, char *p) { int a; n = (a = n >= 0) ? -n : n; p += SIZE - 1; while (n <= -10) { *p-- = ('0' - (n % 10)); n /= 10; } *p = ('0' - (n % 10)); *--p = '-'; return (!a ? p : ++p); } char *ft_itoa(int n) { char p[SIZE + 1]; p[SIZE] = 0; return (ft_strdup(getnbr(n, p))); } |
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 | #define SIZE 20 static char *getnbr(long int n, char *p) { int a; n = (a = n >= 0) ? -n : n; p += SIZE - 1; while (n <= -10) { *p-- = '0' - n % 10; n /= 10; } *p = '0' - n % 10; *--p = '-'; return (!a ? p : ++p); } char *ft_l_itoa(long int n) { char p[SIZE + 1]; p[SIZE] = 0; return (ft_strdup(getnbr(n, p))); } |
+0
-0