我正在尝试从绝对路径名中提取相对路径名。 C中有这个功能吗?是否有一个函数从特定字符开始打印字符串(我有索引)?
答案 0 :(得分:2)
在POSIX.1-2001(例如Linux)中,man 3 basename
给出:
函数dirname()和basename()将以null结尾的路径名字符串分解为目录和文件名组件。在通常情况下,... basename()返回最后的'/'后面的组件。尾随'/'字符不计入路径名的一部分。
答案 1 :(得分: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,以避免分段错误。
希望这在一定程度上有所帮助。 ;)
答案 2 :(得分: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';