c 怎样判断一个字符是否以"/"结尾,怎样截取字符串

lovecode88 2010-05-13 01:56:01
问题1
./aaa/111/

怎样判断这个字符以/结尾

问题2
./aaa/111
这个字符串。怎样截取开始位置到最后一个/之间的字符串,得到./aaa

注意:这个字符串的长度是不固定的。只能截取0-最后一个/之间的字符。

...全文
1029 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanmie_09 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lovecode88 的回复:]
if(path[strlen(path)-1] == '/')

不等于怎么写?
[/Quote]
if(path[strlen(path)-1] != '/')
lovecode88 2010-05-13
  • 打赏
  • 举报
回复
if(path[strlen(path)-1] == '/')

不等于怎么写?
KevinHo 2010-05-13
  • 打赏
  • 举报
回复
LZ
可以通过遍历字符串并且设立标记变量来标记当前最靠后的/位置即可
wangxs_1984 2010-05-13
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <stdio.h>

main(){
char a[256]="./aaa/111/";
char b[256];

/*问题1 ./aaa/111/ 怎样判断这个字符以/结尾*/
if(a[strlen(a)-1]=='/'){
printf("字符串[%s]以 / 结尾\n",a);
}else{
printf("字符串[%s]没有以 / 结尾\n",a);
}

/*问题2 ./aaa/111 这个字符串。怎样截取开始位置到最后一个/之间的字符串,得到./aaa

注意:这个字符串的长度是不固定的。只能截取0-最后一个/之间的字符。*/

memset(a,0x00,sizeof(a));
memset(b,0x00,sizeof(b));
strcpy(a,"./aaa/111");
printf("原字符串[%s]\n",a);

while(1){

if(a[strlen(a)-1]=='/'){
a[strlen(a)-1]='\0';
break;
}

a[strlen(a)-1]='\0';
}

printf("截取后字符串[%s]\n",a);
}
田暗星 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huanmie_09 的回复:]
C/C++ code

#include <stdio.h>
#include <ctype.h>
#include <string.h>

/*
问题1
./aaa/111/

怎样判断这个字符以/结尾

问题2
./aaa/111
这个字符串。怎样截取开始位置到最后一个/之间的字符串,得到./aaa

注意:这个字符串的长度是不固定的。只能截取0-最后一……
[/Quote]
支持此代码
建鼎呓语 2010-05-13
  • 打赏
  • 举报
回复

char string[] = "./aaa/111/";
int len = strlen(string);
if(len > 0 && string[len - 1] == '/')
{
//do something
}


char string[] = "./aaa/111";
char *p = string + strlen(string);
while(p-- > string)
{
if(*p == '/')
{
*p = '\0';
break;
}
}
////// string[] --> "./aaa"

qingtianhit 2010-05-13
  • 打赏
  • 举报
回复
1.
char str[100+1];
....
if(str[strlen[str]-1] == '/')

2.
char str[100+1];
char strout[100+1];
char * ptmp;
....
memset(strout,0,sizeof(strout));
/*找到最后一个'/'*/
ptmp = str + strlen(str);
while( ptmp != str )
{
if (*(--ptmp) == '/')
{
break;
}
}

memcpy(strout,str,ptmp - str );


selooloo 2010-05-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

int main(void)
{
char str1[]="./aaa/111/",str2[]="./aaa/111",substr[16]={0};
char *p1=str2,*p2=substr,flag=2;
if('/'==str1[strlen(str1)-1])//判断是否以'/'结尾,其实是判断倒数第二个字符是否'/'结尾,因为字符串都以'\0'结尾
printf("%s is end of /.\n",str1);
while(*p1&&flag)//取字符串
{
*p2++=*p1++;
if('/'==*p1)
--flag;
}
puts(substr);
getchar();
return 0;
}
huanmie_09 2010-05-13
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <ctype.h>
#include <string.h>

/*
问题1
./aaa/111/

怎样判断这个字符以/结尾

问题2
./aaa/111
这个字符串。怎样截取开始位置到最后一个/之间的字符串,得到./aaa

注意:这个字符串的长度是不固定的。只能截取0-最后一个/之间的字符。
*/
int main()
{
//这个字符串的长度是不固定的。只能截取0-最后一个/之间的字符。
//可以调用输入函数,来对str赋值.
char str[255] = "./aaa/111/";

char s[255] = {'\0'};
char *p;

puts(str);

//怎样判断这个字符以/结尾
//判断最后一个字符是不是'/'
printf("是否以'/'结束?\n");
if(str[strlen(str)-1] == '/') {
printf("yes\n");
}
else {
printf("no\n");
}

//怎样截取开始位置到最后一个/之间的字符串,得到./aaa
//可以先定位最后一个'/'字符在串中的位置.然后取开头到这个位置之间的字符.
p = strrchr(str, '/');
if(p == NULL) {
printf("%s中没有找到'/'字符!\n", str);
return 1;
}
printf("%s中最后一个'/'字符的位置为%d.\n", str, p-str);
strncpy(s, str, p - str);
printf("s=%s\n", s);
return 0;
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧