我在C中有一个字符串(路径名),我需要从字符串中删除最后一个/ ....
Ex:home / usr / bin / ls
通缉结果:home / usr / bin
说实话,我似乎无法想办法做到这一点。我试过strtok()但是这会从分隔符的第一次出现时拆分字符串,我只需要在" /"的最后一次出现之后删除文本。如果有人对C中的方法有任何指示可以帮助我,我将非常感激。
答案 0 :(得分:1)
使用strrchr
。
此处最大字符串长度为50个字节。
int main()
{
char s1[50];
printf("enter your string\n");
fgets(s1, 50, stdin);
char *p;
p=strrchr(s1, '/');
if(p)
*p='\0';
printf("output is %s\n",s1);
return 0;
}
答案 1 :(得分:0)
循环strtok直到找不到/,然后在先前找到/
时拆分或者,在这种特殊情况下尝试使用dirname()函数
答案 2 :(得分:0)
有许多方法可以做到这一点。最简单的方法之一是使用strrchr
查找路径中最后一次出现的'/'
并将其设置为null
(即将其设为新的end of string
):
#include <stdio.h>
#include <string.h>
int main () {
char mypath[] = "home/usr/bin/ls";
char *p = strrchr (mypath, '/'); /* find last '/' in mypath */
*p = 0; /* set as null-termination */
printf ("\n mypath : %s\n\n", mypath); /* print it */
return 0;
}
<强>输出:强>
$ ./bin/trimpath
mypath : home/usr/bin
另一种方法是找到mypath
的长度(即size_t len = strlen (mypath);
),然后使用指针,递减指针mypath + len -1
,直到找到/
并设置{{ 1}}到/
:
null