Reinitialiser une variable static
Bonsoir,
J'ai un programme en C et je suis embêté car j'ai une grosse fonction faisant appel à d'autre ou j'ai des variable static
Le soucis c'est que si je lance 2 fois ma grosse fonction je me fais avoir, donc je suis assez paumé pour changer la valeur de ma static vu la gueule de la fonction
Code:
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
|
char *process(char *s)
{
static int i = 0;
int j;
char *ret;
ret = 0;
j = 0;
if (s[i] == '%' && s[i + 1] != '%' && s[i] != 0)
{
while ((s[i + ++j] == SPACE || evalchar(s[i + j], EVAL_FLAGS) != -1
|| evalchar(s[i + j], EVAL_CHARS) != -1) && s[i + j] != 0)
;
ret = my_strndup(s + i, j);
i = i + j;
}
else if (s[i] != 0)
{
if (s[i] == '%' && s[i + 1] == '%')
j += 2;
while (s[i + ++j] != '%' && s[i + j] != 0)
;
ret = my_strndup(s + i, j);
i = i + j;
}
return (ret);
} |
Certains auront surement reconnu d'ou vient le code
J'ai le même problème dans une autre fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
t_type *fillarg(va_list first, char *flag)
{
t_type *types;
static va_list ap = 0;
if (ap == 0)
ap = first;
types = xmalloc(sizeof(*types));
if (evalchar('s', flag) != -1)
{
types->string = va_arg(ap, char *);
types->type = evalchar('s', flag);
}
else
{
types->integer = va_arg(ap, int);
types->type = evalchar('d', flag);
}
return (types);
} |
Ca serait pas mal de faire quelquechose de spécial du genre que la fonction si on l'appel avec certains parametres devienne un getter et ensuite on change la valeur à l'adresse
Le soucis c'est la valeur de retour mais c'est une mauvaise idée
Eclairez moi s'il vous plait
PS : Je suis très bête, suffit que j'envois un pointeur :roll: