当前位置: 技术问答>linux和unix
一个简单的字符串处理
来源: 互联网 发布时间:2016-03-22
本文导语: 给出一个字符串,比如char *string = "/mnt/flash/test/"; 返回一个新的串,char *str ="/mnt/flash/"; 也就是处理一次返回上一级目录 自己写了一个,但是运行时偶尔会出错,大家帮忙改改 char *getnewstring(char *str) { int len =...
给出一个字符串,比如char *string = "/mnt/flash/test/";
返回一个新的串,char *str ="/mnt/flash/";
也就是处理一次返回上一级目录
自己写了一个,但是运行时偶尔会出错,大家帮忙改改
char *getnewstring(char *str)
{
int len = strlen(str);
char *tmp = (char *)malloc(len);
memcpy(tmp, str, len-1);
char *p,*q;
p = strpbrk(tmp, "/");
q = strrchr(tmp, '/');
char *tmp1 = (char *)malloc((q-p+1)*sizeof(char));
memcpy(tmp1, tmp, q-p+1);
return tmp1;
}
返回一个新的串,char *str ="/mnt/flash/";
也就是处理一次返回上一级目录
自己写了一个,但是运行时偶尔会出错,大家帮忙改改
char *getnewstring(char *str)
{
int len = strlen(str);
char *tmp = (char *)malloc(len);
memcpy(tmp, str, len-1);
char *p,*q;
p = strpbrk(tmp, "/");
q = strrchr(tmp, '/');
char *tmp1 = (char *)malloc((q-p+1)*sizeof(char));
memcpy(tmp1, tmp, q-p+1);
return tmp1;
}
|
char *getnewstring(char *str)
{
char *p,*q;
char *tmp1;
int len = strlen(str);
tmp1 = (char *)malloc(len+1);
if (str == NULL)
{
return NULL;
}
strcpy(tmp1,str);
q = strrchr(tmp1, '/');
if (q == NULL)
{
return NULL;
}
*q = '';
q = strrchr(tmp1, '/');
p = strchr(tmp1,'/');
if (p == NULL || q == NULL || p == q)
{
return NULL;
}
*(q+1) = '';
return p;
}
int main()
{
char *string = "/mnt/flash/test/";
char *p ;
if (p = getnewstring(string))
{
printf("%sn",p);
}
free(p);
return 0;
}
{
char *p,*q;
char *tmp1;
int len = strlen(str);
tmp1 = (char *)malloc(len+1);
if (str == NULL)
{
return NULL;
}
strcpy(tmp1,str);
q = strrchr(tmp1, '/');
if (q == NULL)
{
return NULL;
}
*q = '';
q = strrchr(tmp1, '/');
p = strchr(tmp1,'/');
if (p == NULL || q == NULL || p == q)
{
return NULL;
}
*(q+1) = '';
return p;
}
int main()
{
char *string = "/mnt/flash/test/";
char *p ;
if (p = getnewstring(string))
{
printf("%sn",p);
}
free(p);
return 0;
}