求相对路径(来源于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;
}


版权声明:转载请注明出处。