Convertir chemin relatif en chemin absolue (pour disque dur)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 310 fois - Téléchargée 21 fois

Contenu du snippet

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 / Exemple :


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; }

A voir également

Ajouter un commentaire Commentaire
Messages postés
2
Date d'inscription
vendredi 1 décembre 2000
Statut
Membre
Dernière intervention
17 juillet 2008

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.