
请问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"
用怎么提取?求指导,感激不尽 展开
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"
用怎么提取?求指导,感激不尽 展开
3个回答
展开全部
貌似调用两次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);
}
本回答被提问者采纳

你对这个回答的评价是?
展开全部
搜索呀,从头到尾遍历这个数组,搜索开头和结尾标志,然后去中间字符,计算长度。
追问
能具体点吗?最好是能给出代码,本人是初学者,不熟悉C++编程。你的思路我明白,可是我不懂得如何实现从头到尾遍历这个数组?怎么搜索开头和结尾标志,然后去中间字符,计算长度。求您指点?
追答
哎。。。这个就是一个循环的问题,如何遍历数组都不懂的话,还是建议你看看书吧,就看写基础的,你就知道了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char head[1024] = {0};
char body[1024] = {0};
sscanf(buf, "%s04 D9 D9%sEB EB EB", head, body); // body就是你要的内容
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‘’保存起来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询