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
Certains auront surement reconnu d'ou vient le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
J'ai le même problème dans une autre fonction
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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
Partager