Convertir chemin relatif en chemin absolue (pour disque dur)

0/5 (1 avis)

Snippet vu 13 731 fois - Téléchargée 22 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
maher0510 Messages postés 2 Date d'inscription vendredi 1 décembre 2000 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 16:13
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.