请问C++中怎么提取字符数组中一段特定字符?

比如下面的这个字符数组:char*buf="#2013-09-2909:35+00566+39.013.4+00.0+00.000193504D9D90595002AIR... 比如下面的这个字符数组 :
char *buf="# 2013-09-29 09:35 +00566 +39.0 13.4 +00.0 +00.0 0 01935
04 D9 D9 0595 002 AIRP 20130929093800 0 00010071 EB EB EB
# 05920011 2013-10-08 13:28 00.00 147 00.00 147 12.0"
现在我只想获取以04 D9 D9开头,以EB EB EB结尾,中间的那一段不确定字符(限57个字符)
如:char *p="04 D9 D9 0595 002 AIRP 20130929093700 0 00010075 EB EB EB"
用怎么提取?求指导,感激不尽
展开
 我来答
空雪梦见
推荐于2016-01-10 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1284万
展开全部

貌似调用两次strstr就好了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char *buf="# 2013-09-29 09:35 +00566 +39.0 13.4 +00.0 +00.0 0 01935 04 D9 D9 0595 002 AIRP 20130929093800 0 00010071 EB EB EB # 05920011 2013-10-08 13:28 00.00 147 00.00 147 12.0";
    char* p04D9D9 = strstr(buf, "04 D9 D9");
    char* pEBEBEB = strstr(buf, "EB EB EB");
    int partLen = pEBEBEB - p04D9D9 + 8; // len of "EB EB EB" is 8
    char* p = (char*) malloc((partLen + 1) * sizeof(char));
    strncpy(p, p04D9D9, partLen);
    p[partLen] = 0;
    
    puts(p);
    
    free(p);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亚马逊选品管家
2013-10-08 · TA获得超过643个赞
知道小有建树答主
回答量:805
采纳率:100%
帮助的人:299万
展开全部
搜索呀,从头到尾遍历这个数组,搜索开头和结尾标志,然后去中间字符,计算长度。
追问
能具体点吗?最好是能给出代码,本人是初学者,不熟悉C++编程。你的思路我明白,可是我不懂得如何实现从头到尾遍历这个数组?怎么搜索开头和结尾标志,然后去中间字符,计算长度。求您指点?
追答
哎。。。这个就是一个循环的问题,如何遍历数组都不懂的话,还是建议你看看书吧,就看写基础的,你就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljf10000
2013-10-08 · TA获得超过199个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:114万
展开全部
char head[1024] = {0};
char body[1024] = {0};

sscanf(buf, "%s04 D9 D9%sEB EB EB", head, body); // body就是你要的内容
追问
buf字符串中有多个以04 D9 D9开头,以EB EB EB结尾的字符串,怎么判断呢?分别提取出每一个以04 D9 D9开头,以EB EB EB结尾的字符串,char *p=‘’04 D9 D9...EB EB EB‘’保存起来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式