Emmanuel Delahaye C is a sharp tool | myeve a écrit :
Code :
- char *
- get_max (char *fichier)
- {
- int i = 0; // compteur local
- char tmpfile[TAILLE];
- sprintf(tmpfile,"%s_%d",fichier,i);
- FILE *fp;
- while ( (fp = fopen (tmpfile, "r" )) != NULL )
- {
- fclose(fp);
- i++;
- sprintf(tmpfile,"%s_%d",fichier,i);
- }
- return tmpfile;
- }
|
comme ca c mieux?
|
Oui, mais il y a un bug potentiel. Bien qu'il soit techniquement possible de retourner l'adresse d'une variable locale, l'utilisation de celle-ci dans la fonction appelante invoque un copportement indéfini (normal, car cette adresse n'est plus valide). Il faut donc faire autrement. Il y a trois solutions connues.
- Retourner l'adresse d'un variable statique (peu recommandé)
- Retourner l'adresse d'un variable dynamique (pratique, mais attention à la libération du bloc)
- Passer l'adresse d'une variable et permettre sa modfication. Si c'est un tableau, il est bon de passer aussi sa taille (en nombres d'éléments).
Mais dans ton cas, tu ne voulais pas juste retourner la valeur du compteur ? Message édité par Emmanuel Delahaye le 21-03-2005 à 13:17:41 ---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
|