360笔试题:求么b相对于a的相对路径

来源:互联网 发布:优化发现环境调研报告 编辑:程序博客网 时间:2024/05/18 07:06

题目如下:
在写一个函数,根据两文件的绝对路径算出相对路径。如 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;}
0 0
原创粉丝点击