0

我正在尝试从绝对路径名中提取相对路径名。C中有这个功能吗?是否有从特定字符开始打印字符串的功能(我有索引)?

4

3 回答 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 回答