linux c 改变文件名,linux c下,從路徑名中分離文件名

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

1、strrchr

頭文件:#include strrchr() 函數用於查找某字符在字符串中最后一次出現的位置,其原型為: char * strrchr(const char *str, int c); 【參數】str 為要查找的字符串,c 為要查找的字符。 strrchr() 將會找出 str 字符串中最后一次出現的字符 c 的地址,然后將該地址返回。 注意:字符串 str 的結束標志 NUL 也會被納入檢索范圍,所以 str 的組后一個字符也可以被定位。 【返回值】如果找到就返回該字符最后一次出現的位置,否則返回 NULL。 返回的地址是字符串在內存中隨機分配的地址再加上你所搜索的字符在字符串位置。設字符在字符串中首次出現的位置為 i,那么返回的地址可以理解為 str + i。

2、strchr

頭文件:#include strchr() 用來查找某字符在字符串中首次出現的位置,其原型為: char * strchr (const char *str, int c); 【參數】str 為要查找的字符串,c 為要查找的字符。 strchr() 將會找出 str 字符串中第一次出現的字符 c 的地址,然后將該地址返回。 注意:字符串 str 的結束標志 NUL 也會被納入檢索范圍,所以 str 的組后一個字符也可以被定位。 【返回值】如果找到指定的字符則返回該字符所在地址,否則返回 NULL。 返回的地址是字符串在內存中隨機分配的地址再加上你所搜索的字符在字符串位置。設字符在字符串中首次出現的位置為 i,那么返回的地址可以理解為 str + i。 提示:如果希望查找某字符在字符串中最后一次出現的位置,可以使用strrchr()函數。

3、strstr

頭文件:#include strstr()函數用來檢索子串在字符串中首次出現的位置,其原型為: char *strstr( char *str, char * substr ); 【參數說明】str為要檢索的字符串,substr為要檢索的子串。 【返回值】返回字符串str中第一次出現子串substr的地址;如果沒有檢索到子串,則返回NULL。

例子1:

#include

#include

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);

else

printf("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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值