求相对路径(来源于2015年360实习笔试题)
求相对路径(来自2015年360实习笔试题)
题目:
写一个函数,根据两文件的绝对路径算出相对路径。如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<stdlib.h> void findRelativePath(char *str1 , char *str2) { char *p = str1 , *q = str2; char buf[1024] = {0}; while(*str1 != '\0' && *str2 != '\0') { if(*str1 == *str2) { if(*str1 == '/') { p = str1; q = str2; } str1++; str2++; } else { str1 = p + 1; while(*str1 != '\0') { if(*str1 == '/') strcat(buf , "../"); str1++; } str2 = q + 1; strcat(buf , str2); break; } } printf("The relative path is %s\n" , buf); } int main() { char str1[] = "/qihoo/app/a/b/c/d/new.c"; char str2[] = "/qihoo/app/1/2/test.c"; findRelativePath(str1 , str2); return 0; }
版权声明:转载请注明出处。