日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux c下,从路径名中分离文件名

發布時間:2025/7/25 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c下,从路径名中分离文件名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先介紹一些查找字符的函數

1、strrchr

頭文件:#include <string.h>

strrchr() 函數用于查找某字符在字符串中最后一次出現的位置,其原型為:
? ? char * strrchr(const char *str, int c);

【參數】str 為要查找的字符串,c 為要查找的字符。

strrchr() 將會找出 str 字符串中最后一次出現的字符 c 的地址,然后將該地址返回。

注意:字符串 str 的結束標志 NUL 也會被納入檢索范圍,所以 str 的組后一個字符也可以被定位。

【返回值】如果找到就返回該字符最后一次出現的位置,否則返回 NULL。

返回的地址是字符串在內存中隨機分配的地址再加上你所搜索的字符在字符串位置。設字符在字符串中首次出現的位置為 i,那么返回的地址可以理解為 str + i。

2、strchr

頭文件:#include <string.h>

strchr() 用來查找某字符在字符串中首次出現的位置,其原型為:
? ? char * strchr (const char *str, int c);

【參數】str 為要查找的字符串,c 為要查找的字符。

strchr() 將會找出 str 字符串中第一次出現的字符 c 的地址,然后將該地址返回。

注意:字符串 str 的結束標志 NUL 也會被納入檢索范圍,所以 str 的組后一個字符也可以被定位。

【返回值】如果找到指定的字符則返回該字符所在地址,否則返回 NULL。

返回的地址是字符串在內存中隨機分配的地址再加上你所搜索的字符在字符串位置。設字符在字符串中首次出現的位置為 i,那么返回的地址可以理解為 str + i。

提示:如果希望查找某字符在字符串中最后一次出現的位置,可以使用?strrchr()?函數。


3、strstr

頭文件:#include <string.h>

strstr()函數用來檢索子串在字符串中首次出現的位置,其原型為:
? ? char *strstr( char *str, char * substr );

【參數說明】str為要檢索的字符串,substr為要檢索的子串。

【返回值】返回字符串str中第一次出現子串substr的地址;如果沒有檢索到子串,則返回NULL。


例子1:

#include<string.h> #include<stdio.h> char *find_file_name(const char *name) {char *name_start = NULL;int sep = '/';if (NULL == name) {printf("the path name is NULL\n");return NULL;}name_start = strrchr(name, sep);return (NULL == name_start)?name:(name_start + 1); } int main(void) {char string[15],mypath[66]={0};char*ptr,c='r';char filepath[]="/home/linux_c/hello.c";strcpy(string,"Thisisastring");ptr=strchr(string,c);if(ptr)printf("The character %c is at position:%d\n",c,ptr-string+1);elseprintf("The character was not found\n");printf("\n\n filename is %s \n\n",find_file_name(filepath));return 0; }


例子2:

//windows下路徑測試 #include "stdio.h" #include "string.h" int main(void){char fn[30],*p;char pathname[80]="e:\\1\\2\\abc.dat";//上句假設以某種方式獲得的全文件名在pathname中,"..."中只是舉例strcpy(fn,(p=strrchr(pathname,'\\')) ? p+1 : pathname);//上句函數第2實參這樣寫以防止文件在當前目錄下時因p=NULL而出錯printf("%s\n",fn);//打出來看看return 0; }



參考:http://c.biancheng.net/cpp/u/string_h/


轉載于:https://www.cnblogs.com/alan666/p/8311891.html

總結

以上是生活随笔為你收集整理的linux c下,从路径名中分离文件名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。