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

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ù)非常方便,可以有效地幫助處理和解析文件路徑。在進(jìn)行文件操作時,合理使用這兩個函數(shù)可以簡化你的代碼。

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

相關(guān)文章

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

    匯編語言rep movsd 的使用詳解

    rep movsd 每次ecx!=0便執(zhí)行movsd ,然后ecx=ecx-1 movsd移動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ù)”處理的對象。這篇文章主要帶大家了解一下C++中普通舊數(shù)據(jù)的定義與使用,感興趣的可以了解下
    2023-03-03
  • C語言堆棧入門指南

    C語言堆棧入門指南

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

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

    在我們?nèi)粘i_發(fā)中,無可避免需要使用單例模式進(jìn)行設(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++封閉類的定義與使用

    一個類的成員變量如果是另一個類的對象,就稱之為“成員對象”。包含成員對象的類叫封閉類(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)個有限結(jié)點組成一個具有層次關(guān)系的集合,把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的,需要的朋友可以參考下
    2023-07-07
  • C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

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

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

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

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

最新評論

滁州市| 西乡县| 禄劝| 白玉县| 正定县| 如东县| 宁国市| 靖安县| 吉林市| 含山县| 山阴县| 盐津县| 拉孜县| 安多县| 古浪县| 大港区| 德昌县| 弥勒县| 罗源县| 洮南市| 安多县| 永嘉县| 海淀区| 囊谦县| 江陵县| 平邑县| 吐鲁番市| 环江| 富平县| 六安市| 改则县| 崇左市| 固镇县| 平武县| 江孜县| 汾阳市| 镇安县| 应用必备| 云梦县| 伊金霍洛旗| 平顺县|