begin process at 2012 02 13 00:46:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > CONVERTIR CHEMIN RELATIF EN CHEMIN ABSOLUE (POUR DISQUE DUR)

CONVERTIR CHEMIN RELATIF EN CHEMIN ABSOLUE (POUR DISQUE DUR)


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichiers / Disque Classé sous :chemin, relatif, convertion Niveau :Débutant Date de création :12/08/2007 Vu :9 965

Auteur : darkpoulpo

Ecrire un message privé
Site perso
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

ce code est un complement de l'utilisation de GetFullPathName() qui necessite un fichier existant

char r[1024]="c:\\f\\g\\";
AbsolutePath("\\.\\..\\..\\ essai\\essai2\\fichier.txt",r); // retournera c:\essai\essai2\fichier.txt

Source

  • bool AbsolutePath(const char *relatif,char *actualpath)
  • {
  • unsigned int pos= 0;
  • if (strstr(relatif,":\\")) {
  • strcpy(actualpath,relatif);
  • return true;
  • }
  • char *t = strrchr(actualpath,'\\');
  • if (*t == '\\' && *(t+1) != '\0') *t = '\0';
  • while (relatif[pos]) {
  • if (relatif[pos] == '.' && relatif[pos+1] == '\\') {
  • pos += 2;
  • } else if (relatif[pos] == '.' && relatif[pos+1] == '.' && relatif[pos+2] == '\\' ) {
  • pos += 3;
  • char *l = strrchr(actualpath,'\\');
  • if (*(l-1) == '\\') return false;
  • *l = '\0';
  • } else if (relatif[pos] == '\\') {
  • pos++;
  • } else {
  • char *end = strchr(actualpath,'\0');
  • while (relatif[pos] != '\\' && relatif[pos] != '\0') {
  • *end = relatif[pos];
  • pos++;
  • *end++;
  • }
  • if (relatif[pos] == '\\' ) { *end = '\\'; *end++; }
  • *end = '\0';
  • }
  • }
  • return true;
  • }
bool AbsolutePath(const char *relatif,char *actualpath)
{
	unsigned int pos= 0;

	if (strstr(relatif,":\\")) {
		strcpy(actualpath,relatif);
		return true;
	}

	char *t = strrchr(actualpath,'\\');
	if (*t == '\\' && *(t+1) != '\0') *t = '\0';


	while (relatif[pos]) {
		if (relatif[pos] == '.' && relatif[pos+1] == '\\') {
			pos += 2;
		} else if (relatif[pos] == '.' && relatif[pos+1] == '.' && relatif[pos+2] == '\\' ) {
			pos += 3;
			char *l = strrchr(actualpath,'\\');
			if (*(l-1) == '\\') return false;
			*l = '\0';
		} else if (relatif[pos] == '\\') {
			pos++;
		} else {
			char *end = strchr(actualpath,'\0');

			while (relatif[pos] != '\\' && relatif[pos] != '\0') {
				*end = relatif[pos];
				pos++;
				*end++;
			}
			if (relatif[pos] == '\\' ) { *end = '\\'; *end++; }
			*end = '\0';
		}
	}
	
	return true;
}



 Sources du même auteur

SSCANF POUR SUPPRIMER DES ESPACES (COMME TRIM())
RECUPERER LE DNS DU SERVEUR MX MAIL D'UNE ADRESSE EMAIL
LISTE CHAINÉE (TEMPLATE, NOEUD LOCAL OU GLOBAL, INSERTION OU...
Source avec Zip ENCORE UN PARSER XML
MISE À JOUR DE VOS PROJETS PAR UNE DLL

 Sources de la même categorie

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip COPIE DE FICHIERS PAR RESEAU LOCAL par cczerty

 Sources en rapport avec celle ci

Source avec Zip BELLMAN:LA VALEUR DU PLUS COURT CHEMIN ET LE PLUS COURT CHEM... par Perace
CONVERTION PS EN NOIR ET BLANC par CerberusAbaka
RECHERCHE DE CHEMIN (RECURSIVITÉ ET BACKTRACKING) par manta7
ENUMÉRATION DE TOUS LES CHEMINS DANS UN GRAPHE par osta
OBTENIR L'ETAT DES BITS QUI COMPOSENT UN OCTET (CONVERSION X... par TanKu

Commentaires et avis

Commentaire de maher0510 le 17/07/2008 16:13:28 8/10

je cherche une fonction qui fait presque la même chose que la votre, mais le soucis ça marche pas : ça bug au build (même que je l'ai testé séparément et ça marche) car je dois passer des QString comme paramètres ( et je pense que c'est à cause de ça votre fonction ne marche pas, mais je fais des cast de genre :

AbsolutePath(const_cast<char*>(toolData.mPrjDir.ascii()), const_cast<char*>(makefilePath.ascii()));)

Est ce que vous pouvez  m'aider à trouver la sol°, c'est merci de votre part

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

HELP !! Conversion chemin relatif en absolu et vice versa [ par 2swfan ] salut a tous Pourriez vous me dire si il existe une fonction C (et son nom) permettant de transformer un chemin relatif en chemin absolu ?? et vice chemin relatif d'un lien hypertexte [ par moustike31 ] Bonjour, Sur un classeur Excel j'utilise plusieurs liens hypertextes or ces liens ne fonctionne plus si on déplace les fichiers auxquels les liens fon probleme de convertion de int vers char * [ par zozizozu ] Bonjour a tous.J'ai un probleme de convertion de int vers char *voici mon code :    for( int  i = 0; i &lt; mChannelCount; i++ )    {        char into creation de repertoire et sous repertoire à partir d'un chemin en c [ par coolsquale ] bonjour à tousje suis en train de programmer un utilitaire d'archivage dans le cadre d'un travail scolaireet j'aimerais savoir s'il y a une commande s trouver le chemin réel à partir d'un raccourci [ par binet1 ] Bonjour,  je cherche comment en visual c++ 2008 de trouver le chemin réel d'un raccourciEx.  j'ai le chemin "C:\HP\dir" qui est un raccourci de "C:\wi [fopen] Probleme avec les chemin complet [ par Ilsundal ] Bonjour a tous,je rencontre un soucis avec la commande fopen pour ouvrir un fichier binaire sous Windows. Quand j'utilise le chemin relatif pour accéd Rechercher un fichier en C (UNIX) [ par AL.001 ] Bonjour,Je cherche une fonction qui prend en entrée un chemin, un nom de fichier, et qui me retourne le chemin complet du fichier.Et le tout sous UNIX Modifier le chemin d'un bitmap. [ par linuxfr ] Bonjour,Je crée une application dans lequel je choisis une image qui s'affiche ensuite dans un bouton (CBitmapButton).Je souhaiterais en fait, affiche


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales