欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++解析文件名和目錄路徑的方法

 更新時間:2024年10月10日 11:58:40   作者:三玖誒  
#include <libgen.h> 是一個 C/C++ 語言的頭文件,主要用于字符串處理,特別是在處理文件路徑時,它提供了一些函數(shù)來幫助你解析文件名和目錄路徑,本文就給大家介紹一下C/C++解析文件名和目錄路徑的方法,需要的朋友可以參考下

#include <libgen.h> 是一個 C/C++ 語言的頭文件,主要用于字符串處理,特別是在處理文件路徑時。它提供了一些函數(shù)來幫助你解析文件名和目錄路徑。

主要函數(shù)

以下是 libgen.h 中一些常見的函數(shù):

basename(char *path):

  • 功能:返回給定路徑中的基本文件名(去掉路徑部分)。
  • 示例:
#include <stdio.h>
#include <libgen.h>

int main() {
    char path[] = "/home/user/file.txt";
    printf("Base name: %s\n", basename(path)); // 輸出: "file.txt"
    return 0;
}

dirname(char *path):

  • 功能:返回給定路徑的目錄部分(去掉文件名)。
  • 示例:
#include <stdio.h>
#include <libgen.h>

int main() {
    char path[] = "/home/user/file.txt";
    printf("Directory name: %s\n", dirname(path)); // 輸出: "/home/user"
    return 0;
}

使用注意事項

  • 修改輸入字符串:這些函數(shù)通常會修改輸入的字符串(即 path 參數(shù))。因此,傳入的字符串應(yīng)該是可修改的(通常是數(shù)組,而不是字符串常量)。
  • 返回的指針:返回的指針指向的是傳入的參數(shù),因此如果之后再次使用相同的 path,需要重新設(shè)置。
  • 不適用于復(fù)雜路徑basename 和 dirname 對于某些復(fù)雜的路徑(例如包含多個連續(xù)斜杠的路徑或者以斜杠結(jié)尾的路徑)可能無法提供預(yù)期的結(jié)果。

示例程序

下面是一個完整的程序,演示了如何使用 basename 和 dirname

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

int main() {
    char path[] = "/home/user/file.txt";

    // 復(fù)制原始字符串以避免 basename/dirname 修改它
    char path_copy[256];
    strncpy(path_copy, path, sizeof(path_copy));

    printf("Original path: %s\n", path);
    printf("Base name: %s\n", basename(path_copy)); // 輸出: "file.txt"

    // 重新復(fù)制原始字符串以獲取目錄名
    strncpy(path_copy, path, sizeof(path_copy));
    printf("Directory name: %s\n", dirname(path_copy)); // 輸出: "/home/user"

    return 0;
}

總結(jié)

libgen.h 提供的 basename 和 dirname 函數(shù)非常方便,可以有效地幫助處理和解析文件路徑。在進行文件操作時,合理使用這兩個函數(shù)可以簡化你的代碼。

到此這篇關(guān)于C/C++解析文件名和目錄路徑的方法的文章就介紹到這了,更多相關(guān)C/C++解析文件名和目錄路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)LeetCode(91.解碼方法)

    C++實現(xiàn)LeetCode(91.解碼方法)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(91.解碼方法),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 仿現(xiàn)代C++智能指針實現(xiàn)引用計數(shù)

    仿現(xiàn)代C++智能指針實現(xiàn)引用計數(shù)

    這篇文章主要為大家詳細介紹了如何仿現(xiàn)代C++智能指針實現(xiàn)引用計數(shù),文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解下
    2024-03-03
  • c++利用stl set_difference對車輛進出區(qū)域進行判定

    c++利用stl set_difference對車輛進出區(qū)域進行判定

    這篇文章主要介紹了set_difference,用于求兩個集合的差集,結(jié)果集合中包含所有屬于第一個集合但不屬于第二個集合的元素,需要的朋友可以參考下
    2017-03-03
  • C語言實現(xiàn)通訊錄小項目

    C語言實現(xiàn)通訊錄小項目

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)通訊錄小項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 基于Qt和Opencv實現(xiàn)二維碼解析

    基于Qt和Opencv實現(xiàn)二維碼解析

    這篇文章主要為大家詳細介紹了如何利用?Qt?和?OpenCV?實現(xiàn)一個可從視頻和圖片中檢測二維碼的軟件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • C語言 數(shù)組指針詳解及示例代碼

    C語言 數(shù)組指針詳解及示例代碼

    本文主要介紹C語言 數(shù)組指針,這里整理了相關(guān)資料并附示例待會及實現(xiàn)結(jié)果,幫助大家學(xué)習(xí)C語言中指針的知識,有需要學(xué)習(xí)此部分內(nèi)容的朋友可以參考下
    2016-08-08
  • C語言 指針的初始化賦值案例詳解

    C語言 指針的初始化賦值案例詳解

    這篇文章主要介紹了C語言 指針的初始化賦值案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言中6組指針和自增運算符結(jié)合方式的運算順序問題

    C語言中6組指針和自增運算符結(jié)合方式的運算順序問題

    本文通過代碼實現(xiàn)分析了6種組合:* p++,(* p)++,* (p++),++* p,++( * p), * (++p),需要的朋友可以參考下
    2015-07-07
  • typedef和#define的用法以及區(qū)別

    typedef和#define的用法以及區(qū)別

    以下是對C/C++語言中,typedef和#define的用法以及區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下
    2013-10-10
  • 詳解C語言內(nèi)核字符串拷貝與比較

    詳解C語言內(nèi)核字符串拷貝與比較

    本文將探索一下字符串的拷貝與比較,與應(yīng)用層不同內(nèi)核字符串拷貝與比較也需要使用內(nèi)核專用的API函數(shù),字符串的拷貝往往伴隨有內(nèi)核內(nèi)存分配,我們將首先簡單介紹內(nèi)核如何分配堆空間,然后再以此為契機簡介字符串的拷貝與比較
    2022-09-09

最新評論