Bonjour,
j'ai codé ce code mais à chaque fois que je compile il me met qu'il y a une erreur de définition de pointeurs. Mais je ne vois pas comment régler le problème. Mon problème vient de la ligne en gras. Si quelqu'un pouvait m'aider.
Merci beaucoup d'avance pour votre aide.
Mon code (il est un peu en bazar mais pour l'instant j'essaye déjà qu'il marche) :
#include<stdlib.h>
void my_putchar(char c)
{
write(1, &c, 1);
}
int my_putnbr(int nb)
{
if (nb < 0)
my_putchar('-');
else
nb = -nb;
if (nb < -9)
my_putnbr( - (nb / 10));
my_putchar('0' + - (nb % 10));
}
int my_strlen(char *str)
{
int res;
res = 0;
while(str[res] != '\0')
res++;
return(res);
}
int my_getnbr(char *str)
{
int result;
int fact_mult;
int i;
fact_mult = 1;
result = 0;
i = my_strlen(str) - 1;
while (i >= 0)
{
result = result + (fact_mult * (i - '0'));
fact_mult *= 10;
i--;
}
return(result);
}
void my_putstr(char *str)
{
write(1, str, strlen(str));
}
int my_sub(int nb1, int nb2)
{
return(nb1 - nb2);
}
int my_add(int nb1, int nb2)
{
return(nb1 + nb2);
}
int my_div(int nb1, int nb2)
{
if(nb2 == 0)
{
my_putstr("ERROR");
exit(-1);
}
return(nb1 / nb2);
}
int my_mod(int nb1, int nb2)
{
if(nb2 == 0)
{
my_putstr("ERROR");
exit(-1);
}
return(nb1 % nb2);
}
int my_mul(int nb1, int nb2)
{
return(nb1 * nb2);
}
typedef struct s_opers
{
char oper;
int (*f)();
} t_opers;
t_opers gl_tab[] = {
{'+', my_add},
{'-', my_sub},
{'/', my_div},
{'*', my_mul},
{'%', my_mod},
{0,0}
};
int do_op(int nb1, char oper, int nb2)
{
int i;
i = 0;
while (gl_tab[i].oper != 0)
{
if (oper == gl_tab[i].oper)
return (gl_tab[i].f(nb1, nb2));
i++;
}
}
int main(int argc, int **argv)
{
char oper;
int res;
oper = argv[2][0];
if(argc != 4)
{
my_putstr("ERROR");
exit(-1);
}
res = do_op(my_getnbr(argv[1]), oper, my_getnbr(argv[3]));
my_putnbr(res);
}