#include char *calcul(char *exph, char *expb, int b, int c) { int ret; char *resul; int a; ret = 48; a = my_strlen(exph) <= my_strlen(expb) ? my_strlen(expb) : my_strlen(exph); a = my_strlen(exph) > my_strlen(expb) ? my_strlen(exph) : my_strlen(expb); resul = malloc(sizeof (*resul) * (a + 2)); resul[a + 1] = '\0'; a -= 1; while (a >= -1) { resul[a + 1] = (a + c >= 0) ? exph[a + c] - 48 : 0; resul[a + 1] += (a + b >= 0) ? expb[a + b] - 48 : 0; resul[a + 1] += ret; ret = 48; if ((resul[a + 1]) > 57) { ret = 49; resul[a + 1] -= 10; } a--; } return (resul); } void my_add(char *exph, char *expb, int taille1, int taille2) { int b; int c; char *resul; c = 0; b = 0; if (taille1 <= taille2) c = taille1 - taille2; else if (taille1 > taille2) b = taille2 - taille1; resul = calcul(exph, expb, b, c); free(resul); printf("%s\n", resul); } int main(int argc, char **argv) { char *exph; char *expb; int taille1; int taille2; if (argc == 3) { exph = argv[1]; expb = argv[2]; taille1 = my_strlen(exph); taille2 = my_strlen(expb); my_add(exph, expb, taille1, taille2); } else write(1, "Une addition a besoin de 2 nombres !\n", 38); }