Obtenir le répertoire courant

Problème

Vous voulez obtenir le chemin complet du répertoire courant.

Solution

Utilisez g_get_current_dir() de la bibliothèque glib ou codez quelques lignes autour de getcwd().

Discussion

La fonction g_get_current_dir() renvoie une chaîne de caractères contenant le répertoire courant, chaîne qu’il faut libérer avec g_free() après utilisation.

Prototypes


#include <glib.h> 
gchar *g_get_current_dir (void);
 

Si vous préférez utiliser getcwd(), vous devez fournir un espace mémoire à cette fonction, et s’il est trop petit, recommencer avec un espace plus grand. Pour avoir un programme robuste, préférez un code de ce genre :


char * 
my_get_cwd (void) 
{ 
  char *cwd; 
  int len = 64; 
  int r; 
  if (NULL == (cwd = malloc (len * sizeof *cwd))) 
    { 
      fprintf (stderr, "Espace mémoire insuffisant\n"); 
      exit (EXIT_FAILURE); 
    } 
  while ((NULL == (r = getcwd (cwd, len))) && (ERANGE == errno)) 
    { 
      len += 32; 
      if(NULL == (cwd = realloc (cwd, len * sizeof *cwd))) 
        { 
          fprintf (stderr, "Espace mémoire insuffisant\n"); 
          exit (EXIT_FAILURE); 
        } 
    } 
  if (r > 0) 
    return (cwd); 
  free (cwd); 
  return (NULL); 
}
 

Ce code renvoie NULL en cas d’erreur ou une chaîne de caractères contenant le chemin courant. C’est au programmeur de libérer l’espace mémoire...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Créer un lien symbolique
Suivant
Reconnaître que deux noms correspondent au même fichier