题目如下:
在写一个函数,根据两文件的绝对路径算出相对路径。如 a=”/qihoo/app/a/b/c/d/new.c”,b=”/qihoo/app/1/2/test.c’,那么b相对于a的相对路径是”../../../../1/2/test.c”
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char a[] = "/qihoo/app/a/b/c/d/new.c";
char b[] = "/qihoo/app/1/2/test.c";
int i = 0, j = 0;
int location = 0;
int count = 0;
char szRelativePath[50] = {0};
/* 先找出两个文件的公共的路径位置 */
for(i = 0; i < strlen(a) && i < strlen(b); i++)
{
if(a[i] != b[i])
{
break;
}
}
location = i;
/* 先找到a与b的共有的目录级数 */
for(; i <strlen(a);i++)
{
if(a[i] == '/')
{
count++;
}
}
count++;
/* 先找到a与b的共有的目录 */
for(i = 0; i < count; i++)
{
strcat(szRelativePath,"../");
}
for(j = location; j >= 0; j--)
{
if(b[j] == '/')
{
j++;
break;
}
}
/* 把剩下的相对路径接起来 */
strcat(szRelativePath,b+j);
printf("%s\n",szRelativePath);
return 0;
}