算法--计算两个绝对路径之间的相对路径
2014-11-24 09:40
369 查看
例如有两个绝度路径分别为"/qihoo/app/1/2/jtest.c"和"/qihoo/app/a/b/c/d/df/fa/new.c",计算两者之间的相对路径。
算法如下:
算法如下:
#include<stdio.h> #include<stdlib.h> int CalculateSperatorNum(const char* str) { int count=0; for(; *str; str++) { if(*str=='/') count++; } return count; } void RelativePath(const char* strA, const char* strB, char*& result) { if(NULL==strA || NULL==strB) return; int sepA=CalculateSperatorNum(strA); int sepB=CalculateSperatorNum(strB); const char* ptrA=strA; const char* ptrB=strB; const char *p1=NULL, *p2=NULL; while((*ptrA==*ptrB) && *ptrA!='\0') {ptrA++; ptrB++;} if(*ptrA=='\0') return; if(sepA>sepB){ p1=ptrA; p2=ptrB;} else{ p2=ptrA; p1=ptrB;} int n=CalculateSperatorNum(p1); const char* p=p2; int len=0; while(*p++!='\0') len++; result=(char*)malloc(sizeof(char)*(n*3+len+1)); int i=0; for(i=0; i<n*3; i+=3) { *(result+i)='.'; *(result+i+1)='.'; *(result+i+2)='/'; } while(*p2!='\0') { *(result+i++)=*p2; p2++; } *(result+i)='\0'; } int main(int argc, char** argv) { char* a="/qihoo/app/1/2/jtest.c", *b="/qihoo/app/a/b/c/d/df/fa/new.c"; char* r=NULL; RelativePath(a, b, r); printf("%s\n", r); free(r); return 0; }
相关文章推荐
- php 计算两个文件之间的相对路径方法
- php 计算两个文件之间的相对路径方法
- 算法-计算无向图中两个节点之间所有的路径
- php 两个文件之间的相对路径的计算方法
- php绝对路径与相对路径之间关系的的分析
- php绝对路径与相对路径之间关系的的深入研究
- java通过经纬度计算两个点的之间的距离的算法
- 计算两个时间戳之间的天数的一种比较高效的算法
- php绝对路径与相对路径之间关系的的深入研究注释规范揪
- php绝对路径与相对路径之间关系的的分析
- C#计算两个文件的相对目录算法
- php绝对路径与相对路径之间关系的的深入研究http://evanwukong.blog.163.com/blog/static/13483649520117105319400/
- 计算两个IP之间的所有IP的算法
- ios开发之相对路径和绝对路径之间的转换
- 计算两个文件的相对路径(php)
- php绝对路径与相对路径之间关系的的深入研究
- jsp中相对/绝对路径的计算
- 使用PHP计算两个路径的相对路径
- php绝对路径与相对路径之间关系的的深入研究注释规范笆
- php绝对路径与相对路径之间关系的的深入研究注释规范郊