GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada API C untuk mengekstrak nama file dasar dari jalur lengkapnya di Linux?

Ada namadasar() .

Beri makan dengan jalur (dalam bentuk char* ) dan itu akan mengembalikan Anda nama dasar (yaitu nama file/direktori yang Anda inginkan) dalam bentuk char* lainnya .

EDIT:

Saya lupa memberi tahu Anda bahwa versi POSIX dari basename() memodifikasi argumennya. Jika Anda ingin menghindari hal ini, Anda dapat menggunakan basename() versi GNU awali ini di sumber Anda:

#define _GNU_SOURCE
#include <string.h>

Sebagai gantinya versi basename() ini akan mengembalikan string kosong jika Anda memberinya makan, mis. /usr/bin/ karena garis miring.


Anda ingin basename(), yang seharusnya ada di hampir semua sistem POSIX-ish:

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. Menggunakan Google Drive dari Baris Perintah Linux

  2. Linux – Apa Cara Berbeda Untuk Mengatur Izin File Dll Di Gnu/linux?

  3. Mendapatkan Nama Path Lengkap Dari Direktori yang Diberikan?

  1. Apakah ada kode status keluar standar di Linux?

  2. Ekstrak nama file dasar tanpa jalur dan ekstensi di bash

  3. Bagaimana cara menemukan path lengkap program C++ Linux dari dalam?

  1. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  2. Nama proses dari pidnya di linux

  3. Daftar file menggunakan perintah ls di Linux dengan path lengkap