>squale92:
>Bob 64> c'était en gros à ce que Kevin à donné que je pensais : je savais que c'était possible (mais force est de reconnaitre que je ne savais pas trop comment l'implémenter)
>Tu devrais essayer, ça t'éviterai surement ces warnings...
Ma version donne aussi des warnings, parce que les chaînes de caractères sont des
const char * plutôt que des
char *, et parce que les nombres ne sont évidemment pas des pointeurs (on peut mettre un transtypage pour supprimer le warning dans ce cas).
>Bob64:
>1) Je peux faire pareil avec une variable ESI ?
Oui. Et tu n'as même pas besoin du tout de mettre un
&, un
ESI est déjà un pointeur.
>2) C plus compliqué ça... En suivant les instructions de ton tuto j'ai fait un sous programme :
>
>char *tll_name(char *valeur)
>{
>tbl_tios[0]=0;
>return strcpy(tbl_tios+1,valeur)+strlen(valeur);
>}
>
>Mais il ne marche que quand tbl_tios est défini en variable globale... Pkoi ???
Parce qu'on ne peut pas retourner un pointeur vers une variable locale non-statique puisque cette dernière est détruite quand la fonction a fini de s'exécuter. Donc, soit on met
tbl_tios en variable globale ou statique (mais

dans ce cas le prochain appel de la fonction rendra le pointeur de l'appel précédent invalide!), soit on utilise
malloc dans la fonction (mais

il ne faut pas oublier le
free correspondant), soit encore on passe un buffer à la fonction:
char *tll_name(char *valeur, char tbl_tios[20]) (c'est la méthode utilisée le plus souvent en C, et probablement la plus pratique).
[edit]Edité par Kevin Kofler le 13-03-2002 à 19:17:02[/edit]