我正在尝试从绝对路径名中提取相对路径名。C中有这个功能吗?是否有从特定字符开始打印字符串的功能(我有索引)?
问问题
430 次
3 回答
2
在 POSIX.1-2001(例如 Linux)中,man 3 basename
给出:
函数 dirname() 和 basename() 将一个以 null 结尾的路径名字符串分解为目录和文件名组件。在通常情况下,... basename() 返回最后一个“/”之后的组件。尾随 '/' 字符不计入路径名的一部分。
于 2012-10-10T05:18:52.503 回答
0
正如约瑟夫所说,您可以使用 basename()。
希望下面的程序有点帮助。
#include <stdio.h>
#include <stdlib.h>
#include <libgen.h>
#include <string.h>
int main ( int argc, char ** argv)
{
char *path = "/Users/lionnew/cpgm";
printf ("%s\n", basename (path));
/* If you have an index */
int index =15;
int len = strlen(path);
char * dest = malloc(len+1);
dest[len] = '\0';
strcpy (dest, (path+index));
printf ("\n Destination String %s ", dest);
}
注意:确保您的索引值不大于字符串 len 以避免分段错误。
希望这在一定程度上有所帮助。;)
于 2012-10-10T05:40:37.427 回答
0
如果你有索引,你可以很容易地做到这一点。
char * src = "YOUR STRING";
char * dst; // destination
dst = (char *) malloc( sizeof(char) * 20);
dst = (char *)memcpy(dst, &src[THE_INDEX_YOU_KNOW], strlen(src)-THE_INDEX_YOU_KNOW);
dst[len-start]='\0';
于 2012-10-10T05:48:34.830 回答