Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM LINUX FAQ LINUX TUTORIELS LINUX LIVRES LINUX LINUX TV UNIX GTK+ Qt APACHE

BASENAME

Section: Manuel du programmeur Linux (3)
Updated: 21 juillet 2003
Index


NON
SYNOPSIS
DESCRIPTION
EXEMPLE
VALEUR RENVOYÉE
BOGUES
CONFORMITÉ
VOIR AUSSI
TRADUCTION

NON

basename, dirname - Analyse des composants d'un chemin d'accès.

SYNOPSIS

#include <libgen.h>

char *basename(char *chemin);
char *dirname(char *chemin);

DESCRIPTION

Les fonctions basename et dirname décomposent une chaîne terminée par un caractère nul, représentant un chemin d'accès en ses composants répertoire et nom de fichier. En général, dirname renvoie la chaîne s'étendant jusqu'au dernier '/', non compris, et basename renvoie la partie se trouvant après le dernier '/'. Les caractères '/' en fin de chaîne ne font pas partie du chemin.
Si le chemin ne contient pas de slash, dirname renvoie la chaîne "." et basename renvoie une copie de la chaîne chemin. Si le chemin est représenté par la chaîne "/", alors dirname et basename renvoient tout deux la chaîne "/". Si le chemin est un pointeur NULL, ou pointe vers une chaîne vide, alors dirname et basename renvoient tout deux la chaîne "."
En mettant bout à bout la chaîne renvoyée par dirname, un "/", et la chaîne renvoyée par basename, on obtient un chemin d'accès complet.
Autant dirname que basename peuvent modifier le contenu de la chaîne chemin, aussi si vous devez conserver la chaîne originale, il faut leur transmettre des copies de la chaîne. De plus, dirname et basename peuvent renvoyer des pointeurs sur des zones mémoires allouées statiquement, qui peuvent être écrasées par des appels consécutifs.
La liste suivante d'exemple (prise dans SUSv2) montre les chaînes renvoyées par dirname et basename pour différents chemin d'accès :
chemin      dirname  basename
"/usr/lib"  "/usr"   "lib"
"/usr/"     "/"      "usr"
"usr"       "."      "usr"
"/"         "/"      "/"
"."         "."      "."
".."        "."      ".."

EXEMPLE

char *dirc, *basec, *bname, *dname;
char *chemin = "/etc/passwd";

dirc = strdup(chemin);
basec = strdup(chemin);
dname = dirname(dirc);
bname = basename(basec);
printf("dirname=%s, basename=%s\n", dname, bname);
free(dirc);
free(basec);

VALEUR RENVOYÉE

Les fonctions dirname et basename renvoient des pointeurs sur des chaînes terminées par un caractère nul.

BOGUES

Dans les versions de la GlibC jusqu'à 2.2.1 comprise, dirname ne gérait pas correctement les chemins se terminant par un caractère '/' et déclenchait une erreur de segmentation en recevant un pointeur NULL.

CONFORMITÉ

SUSv2

VOIR AUSSI

dirname(1), basename(1),

TRADUCTION

Christophe Blaess, 2001-2003.
Responsable bénévole de la rubrique Linux Professionnel : Olivier Van Hoof - Contacter par EMail :
Vos questions techniques : forum d'entraide Linux Professionnel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.