最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

#include <libgen.h> 是一個(gè) C/C++ 語言的頭文件,主要用于字符串處理,特別是在處理文件路徑時(shí)。它提供了一些函數(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;
}

使用注意事項(xiàng)

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

示例程序

下面是一個(gè)完整的程序,演示了如何使用 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ù)非常方便,可以有效地幫助處理和解析文件路徑。在進(jìn)行文件操作時(shí),合理使用這兩個(gè)函數(shù)可以簡(jiǎn)化你的代碼。

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

相關(guān)文章

  • 匯編語言rep movsd 的使用詳解

    匯編語言rep movsd 的使用詳解

    rep movsd 每次ecx!=0便執(zhí)行movsd ,然后ecx=ecx-1 movsd移動(dòng)ds:[si] 到es:[di],在32位匯編下可以用esi代替si,edi代替di
    2013-09-09
  • 詳解C++中普通舊數(shù)據(jù)(POD)的使用

    詳解C++中普通舊數(shù)據(jù)(POD)的使用

    普通舊數(shù)據(jù)就是內(nèi)存中的連續(xù)字節(jié)序列,是能夠被“僅當(dāng)作數(shù)據(jù)”處理的對(duì)象。這篇文章主要帶大家了解一下C++中普通舊數(shù)據(jù)的定義與使用,感興趣的可以了解下
    2023-03-03
  • C語言堆棧入門指南

    C語言堆棧入門指南

    我身邊的一些編程的朋友以及在網(wǎng)上看帖遇到的朋友中有好多也說不清堆棧,所以我想有必要給大家分享一下我對(duì)堆棧的看法,有說的不對(duì)的地方請(qǐng)朋友們不吝賜教,這對(duì)于大家學(xué)習(xí)會(huì)有很大幫助
    2014-01-01
  • C++使用宏函數(shù)實(shí)現(xiàn)單例模板詳解

    C++使用宏函數(shù)實(shí)現(xiàn)單例模板詳解

    在我們?nèi)粘i_發(fā)中,無可避免需要使用單例模式進(jìn)行設(shè)計(jì)類對(duì)象。這篇文章主要介紹了如何使用宏函數(shù)實(shí)現(xiàn)單例模板,感興趣的小伙伴可以了解一下
    2023-02-02
  • C語言詳細(xì)分析講解流程控制語句用法

    C語言詳細(xì)分析講解流程控制語句用法

    C語言語句的執(zhí)行默認(rèn)順序執(zhí)行(從上往下依次執(zhí)行),編程語言一般除了默認(rèn)的順序執(zhí)行以外,還提供分支執(zhí)行和循環(huán)執(zhí)行的語法,讓我們一起來看看
    2022-05-05
  • 深入了解C++封閉類的定義與使用

    深入了解C++封閉類的定義與使用

    一個(gè)類的成員變量如果是另一個(gè)類的對(duì)象,就稱之為“成員對(duì)象”。包含成員對(duì)象的類叫封閉類(enclosed?class)。本文主要和大家聊聊C++封閉類的使用,需要的可以參考一下
    2022-11-11
  • C/C++位段超詳細(xì)整理大全

    C/C++位段超詳細(xì)整理大全

    以位為單位來定義結(jié)構(gòu)體中的成員變量所占的空間內(nèi)存,含有位段的結(jié)構(gòu)體稱為位段結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于C/C++位段的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • C語言中的二叉樹和堆詳解

    C語言中的二叉樹和堆詳解

    這篇文章主要介紹了C語言中的二叉樹和堆詳解,樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合,把它叫做樹是因?yàn)樗雌饋硐褚豢玫箳斓臉?,也就是說它是根朝上,而葉朝下的,需要的朋友可以參考下
    2023-07-07
  • C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置)

    C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 快速掌握VC6.0中各種宏注釋應(yīng)用(附圖)

    快速掌握VC6.0中各種宏注釋應(yīng)用(附圖)

    為了方便別人或自己閱讀自己的程序,注釋是堅(jiān)決不可少的,一個(gè)漂亮的程序,不是在于你應(yīng)用的技術(shù)多么高深,而是能夠把高深的技術(shù)描述的清楚易懂
    2013-01-01

最新評(píng)論

锡林浩特市| 韩城市| 峨边| 延津县| 灵台县| 德兴市| 凌源市| 苍溪县| 辛集市| 太仓市| 兴山县| 泾川县| 龙游县| 台北市| 林西县| 弋阳县| 晋江市| 佳木斯市| 星座| 瑞金市| 兴化市| 敦化市| 阿城市| 客服| 余江县| 汝阳县| 天台县| 加查县| 调兵山市| 吉木萨尔县| 济南市| 那曲县| 屯昌县| 华池县| 乐亭县| 鲁山县| 宝兴县| 内丘县| 通州市| 长宁县| 西平县|