Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTIR CHEMIN RELATIF EN CHEMIN ABSOLUE (POUR DISQUE DUR)


Information sur la source

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

Commentaires et avis

signaler à un administrateur
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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 3,245 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.