我正在尝试存储最后一次出现的字符串。但是strrchr - 获取我们正在搜索的角色的最后一次出现。
#include<stdio.h>
#include<string.h>
int main(){
char* str = "/angus/declan/";
char* str1 = "dir1/";
char* str2 = "/clington";
char* lname,*lname1,*lname2;
lname = strrchr(str,'/');
lname1 = strrchr(str1,'/');
lname2 = strrchr(str2,'/');
printf("\n lname : %s lname1 : %s lname2 : %s \n",lname,lname1,lname2);
return 0;
}
o / p:
lname : / lname1 : / lname2 : /clington
但我想打印上面的Declan,dir1,clington而不是“/”之前或之后。
答案 0 :(得分:1)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *last(const char *s, char sep){
char *tmp = strdup(s);
char *ret, *p = strrchr(tmp, sep);
if(p){
if(p[1]){
ret = strdup(p+1);
} else {
*p = '\0';
p = strrchr(tmp, sep);
ret = strdup(p ? p+1 : tmp);
}
free(tmp);
return ret;
}
return tmp;
}
int main(){
char *str = "/angus/declan/";
char *str1 = "dir1/";
char *str2 = "/clington";
char* lname,*lname1,*lname2;
lname = last(str, '/');
lname1 = last(str1, '/');
lname2 = last(str2, '/');
printf("\n lname : %s, lname1 : %s, lname2 : %s \n",lname,lname1,lname2);
free(lname);free(lname1);free(lname2);
return 0;
}