GNU/Linux >> Linux の 問題 >  >> Linux

Linux のフル パスからベース ファイル名を抽出する C API はありますか?

basename() があります。

パスを入力します (char* の形式) ) を実行すると、別の char* の形式でベース名 (必要なファイル/ディレクトリの名前) が返されます。 .

編集:

basename() の POSIX バージョンが その引数を変更します。これを避けたい場合は、GNU バージョンの basename() を使用できます。 これをソースの先頭に追加します:

#define _GNU_SOURCE
#include <string.h>

このバージョンの basename() と引き換えに フィードすると、空の文字列が返されます。 /usr/bin/ 末尾のスラッシュのため。


basename() が必要です。これは、ほぼすべての POSIX っぽいシステムに存在するはずです:

http://www.opengroup.org/onlinepubs/000095399/functions/basename.html

#include <stdio.h>
#include <libgen.h>

int main() {
  char name[] = "/foo/bar.txt";
  printf("%s\n", basename(name));
  return 0;
}

...

$ gcc test.c
$ ./a.out
bar.txt
$ 

#include <string.h>

char *basename(char const *path)
{
    char *s = strrchr(path, '/');
    if (!s)
        return strdup(path);
    else
        return strdup(s + 1);
}

Linux
  1. LinuxコマンドラインからのGoogleドライブの使用

  2. Linux – Gnu / linuxでファイルパーミッションなどを設定するさまざまな方法は何ですか?

  3. Linux –システムにRootfsファイルシステムが存在しないのはなぜですか?

  1. 特定のディレクトリのフルパス名を取得しますか?

  2. Linux でコマンドラインを使用して任意のファイルをダウンロードするための 4 つのツール

  3. Linux に標準の終了ステータス コードはありますか?

  1. bashでパスと拡張子なしでファイルのベース名を抽出します

  2. 内部からC++ Linuxプログラムのフルパスを見つける方法は?

  3. ターミナルウィンドウからLinuxでファイルを作成するには?