c语言从特定位置截取字符串问题

bisal(Chen Liu)
博客专家认证
2009-10-09 11:29:27
在c中,有一个字符串数组,其中一个元素是“ab,cd,ef”,我想截取最后一个“,”之后的字符,例如在这里是ef,由于还有其它元素与它的字符数量不同,例如“abc,de,fgh”等,所以必须以最后一个“,”做标记,这样的话如何实现呢?谢谢!
...全文
9709 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
exinxgu 2009-10-11
  • 打赏
  • 举报
回复
5楼倒过来走,遇到空字符为什么要加上逗号呢?谢谢!
小魔菇 2009-10-11
  • 打赏
  • 举报
回复
顶1楼的 用strrchr
mtttt 2009-10-11
  • 打赏
  • 举报
回复
用sprintf函数,把所要的字符串首地址赋给ptr
mtttt 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sysdzw 的回复:]
,([^,]+)$
[/Quote]
这个好
xiaoliang_c 2009-10-10
  • 打赏
  • 举报
回复
while (*ptr != '\0')
ptr ++;
while (*ptr != ',')
{
if (*ptr == ' ')
*ptr = ',';
ptr --;
}
这样应该可以。
bambooxiao 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 matrixcl 的回复:]
2楼基本正确,不过strchr要改成strrchr。

strchr是查找字符串中第一个特定字符,strrchr才是查找最好一个。
1楼说的也没错,库函数本身就是类似这样实现的。不过建议用库函数,这是标准库,在什么环境都可以用的
[/Quote]

2楼没有错,只是从头开始循环,当然用strrchr只循环一次
mlnr_xuhuaihong 2009-10-09
  • 打赏
  • 举报
回复
char *p = "ab,cd,efg,hij,sdf";
char *tmp = p;
while(strchr(tmp,',') != NULL)
{
tmp = strchr(tmp,',')+1;
}
这样子完了后tmp指向的字符串就是你想要的了
starcat 2009-10-09
  • 打赏
  • 举报
回复
如果不用库函数的话,
设置一个变量统计字符串长度(相当于strlen()),然后从后往前数,查找最后一个",",相当于(strrchr()),剩下就是你想要的了(一直读到'\0')
无·法 2009-10-09
  • 打赏
  • 举报
回复
,([^,]+)$
matrixcl 2009-10-09
  • 打赏
  • 举报
回复
2楼基本正确,不过strchr要改成strrchr

strchr是查找字符串中第一个特定字符,strrchr才是查找最好一个。
1楼说的也没错,库函数本身就是类似这样实现的。不过建议用库函数,这是标准库,在什么环境都可以用的

70,020

社区成员

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

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