我有以下json格式的字符串。
{"num":1, "data":{"city": "delhi"}}。
我需要使用以下方法来获取 "num "键的值。sscanf
. 这是我的尝试 我知道这是不正确的。但我不知道怎么做。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *str = "{\"num\":1,\"data\":{\"city\":\"delhi\"}}";
char *ret = malloc(sizeof(char) * 10);
sscanf(str, "{\"num\":%s, %s" , ret);
printf("%s", ret);
return 0;
}
有什么建议吗?
sscanf(str, "{\"num\":%s, %s" , ret);
是错误的,首先你有两个"%s",但你只给了一个位置来保存字符串("%s")。撤退),而且它并没有像你所期望的那样提取出
你想
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *str = "{\"num\":1,\"data\":{\"city\":\"delhi\"}}";
char *ret = malloc(10); /* by definition sizeof(char) is 1 */
if (sscanf(str, "{\"num\":%9[^,]" , ret) == 1)
printf("value is '%s'\n", ret);
free(ret);
return 0;
}
汇编和执行
/tmp % gcc -Wall p.c
/tmp % ./a.out
value is '1'
/tmp %
但要用 扫描f 解析的限制是