Erreur de définition de pointeurs

Résolu
HellYodan Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 27 octobre 2007 - 26 oct. 2007 à 21:42
HellYodan Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 27 octobre 2007 - 27 oct. 2007 à 12:15
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);
}

3 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
26 oct. 2007 à 22:04
argv est un char ** et non un int **

C++ (@++)<!--
3
HellYodan Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 27 octobre 2007
26 oct. 2007 à 22:21
Argh la faute débile

Merci beaucoup SAKingdom
3
HellYodan Messages postés 3 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 27 octobre 2007
27 oct. 2007 à 12:15
Maintenant mon code se compile bien mais j'ai une segmentation fault quand je rentre mes arguments.
Faut-il que j'utilise Malloc ?
3
Rejoignez-nous