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下,从路径名中分离文件名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript中五句话
- 下一篇: 【IT笔试面试题整理】连续子数组的最大和