0

絶対パス名から相対パス名を抽出しようとしています。Cでこれのための関数はありますか? 特定の文字から始まる文字列を出力する機能はありますか (私はインデックスを持っています)?

4

3 に答える 3

2

POSIX.1-2001(Linuxなど)では、次のようになりman 3 basenameます。

関数dirname()およびbasename()は、nullで終了するパス名文字列をディレクトリコンポーネントとファイル名コンポーネントに分割します。通常の場合、... basename()は、最後の'/'に続くコンポーネントを返します。末尾の「/」文字は、パス名の一部としてカウントされません。

于 2012-10-10T05:18:52.503 に答える
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 に答える
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 に答える