sscanf 直到找到一些字符

问题描述 投票:0回答:2

我正在尝试用 C 做一个解析器来读取 JSON。

我需要像这样解析一个表:

char rosa[1024] ="\"358\":{\"myItem\":12,\"1\":{1,0},\"2\":{0, 0}},\"352\":1";
sscanf(rosa, "%[}}]s",rosa);

输出:

"358":{"myItem":12,"1":{1,0

我需要提取第一个键值对。 所以,我试着做一个

sscanf
,但它一直读到第一个
}
,直到
}}
.

有什么建议吗?

致以诚挚的问候。

c json parsing scanf
2个回答
2
投票

使用

strstr(rosa, "}}")
检测
rosa[]
是否包含
}}

char *end = strstr(rosa, "}}");
if (end) {
  printf("<%.*s>\n", (int) (end - rosa) + 2, rosa);
} else {
  printf("Not found\n");
}

0
投票

尝试使用

strchr
char* start = strchr(rosa, '{'); char* end = strchr(start, '}');
。然后计算出你要获取的子串的长度,复制到新的一行。 你应该得到这样的东西:

char* start = strchr(rosa, '{');  
char* end = strchr(start, '}'); 

if(start && end)
  {
    int len = end - start + 1;    
    char result[1024];
    strncpy(result, start, len);   
    result[len] = '\0';            
    printf("Output: %s\n", result);
  }
© www.soinside.com 2019 - 2024. All rights reserved.