C打印特定字符的字符串

时间:2012-10-10 05:11:12

标签: c

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

3 个答案:

答案 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';