絶対パス名から相対パス名を抽出しようとしています。Cでこれのための関数はありますか? 特定の文字から始まる文字列を出力する機能はありますか (私はインデックスを持っています)?
質問する
430 次
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 に答える