- 题目描述:给出一个函数:
- a = “/qihoo/app/a/b/c/d/new.c”;
- b = "/qihoo/app/1/2/test.c";
- 输出b相对于a的相对路径:
- ../../../../1/2/test.c
本人(龙**)的解法
// relativepath.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
#include <string>
#define MAXLEN 100
using namespace std;
void relativePath( char* a, char* b)
{
int al=0;//a中与b不相同的余下路径字符串中'/'的个数
char* at=a,*bt=b;
char* t=(char*)malloc(MAXLEN*(sizeof(char)));
memset(t,0,MAXLEN);
while(at!=NULL&&bt!=NULL)
{
if(*at!=*bt)break;//当两个路径字符串开始不同时退出
at++;bt++;
}
while((*at)!='\0')
{
if(*at=='/')al++;//寻找a中与b不相同的余下路径字符串中'/'的个数
at++;
}
while(al-->0)strcat(t,"../");//b中与a不相同的余下路径字符串连接到t中
strcat(t,bt);
printf("b相对于a的相对路径为:\n%s\n",t);//输出相对路径
free(t);
}
int _tmain(int argc, _TCHAR* argv[])
{
//char* a="/a/b/c/d/abc.c";
//char* b="/a/b/e/f/g/c.c";
char* a=(char*)malloc(MAXLEN*(sizeof(char)));
char* b=(char*)malloc(MAXLEN*(sizeof(char)));
printf("input a path\n");
scanf("%s",a);
printf("input b path\n");
scanf("%s",b);
relativePath(a,b);
getchar();
return 0;
}