首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >解析字符数组

解析字符数组
EN

Stack Overflow用户
提问于 2015-02-26 14:15:59
回答 2查看 196关注 0票数 1

我有一个char数组如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* test = "+IPD,308:{data:\"abc\"} UNLINK";

我试图解析它以将块从{返回到},因此在本例中是子字符串{data:\"abc\"}

我使用了strchr()strrchr(),它们返回指向单个字符位置的指针;但在这种情况下,如何使用它们返回{data:\"abc\"}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-26 14:21:19

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const char* input = "+IPD,308:{data:\"abc\"} UNLINK";
char* start = strchr(input, '{');           // result should be input[9]
char* end = strrchr(input, '}');            // result should be input[20]

char* output = (char*)malloc(end-start+2);  // End-start should be 11 + 2 = 13
strncpy(output, start, end-start+1);        // Copy 12 chars.
output[end-start+1] = '\0';                 // Append an End-of-String nul

/* Use the output string.... */

free(output);                               // Very important cleanup!
output = NULL; 

它找到第一个大括号,最后一个大括号,分配适当的内存,并执行一个strncpy来使用相关的数据创建一个新的字符串。

IDE链接:http://ideone.com/sVn147

输出:{data:"abc"}

票数 2
EN

Stack Overflow用户

发布于 2015-02-26 14:19:57

您可以尝试遍历字符串。到达第一个令牌时,开始将字符复制到第二个缓冲区中。到达第二个令牌时,退出循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28753819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文