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