C语言从一个字符串中找出指定的几个字符串并打印出来的有关问题

C语言从一个字符串中找出指定的几个字符串并打印出来的问题
本帖最后由 Foxfile_Hom 于 2014-06-12 00:01:37 编辑
已知
char buf[1024] = "[{"bucket_name":"andy-personal-cloud4","status":"0","cdatetime":"1402481705","used_capacity":"0","total_capacity":"0","region":"beijing"},{"bucket_name":"andy-personal-cloud3","status":"0","cdatetime":"1402479952","used_capacity":"0","total_capacity":"0","region":"beijing"},{"bucket_name":"andy-personal-cloud2","status":"0","cdatetime":"1402386155","used_capacity":"119056","total_capacity":"0","region":"beijing"},{"bucket_name":"andy-personal-cloud","status":"0","cdatetime":"1401209441","used_capacity":"19491722","total_capacity":"0","region":"beijing"}]";

现要从这个字符串中找出所有bucket_name的取值部分(所有的"bucket_name":后面的一对引号中的字符串)并打印出来并在终端显示,还没找到好的办法,期待一些好的实现方法。
------解决方案--------------------
大体是这样:
char  *pc;
pc = strstr(buf, "bucket_name")+strlen("bucket_name");

你的代码根本就无法编译吧?双引号用的太乱。
注意:如果字符串中有,双引号,在代码中应当这样表示:\"

------解决方案--------------------
	const char* str = "	[{\"bucket_name\":\"bucket_name\",\"status\":\"0\",\"bucket_name\":\"1402481705\"";
const char* key = "\"bucket_name\"";
const char *p = str;
size_t len = strlen(key);
char value[256];

while( (p=strstr(p,key))!=NULL )
{
sscanf(p, "\"bucket_name\":\"%[^\"]",value);
p+= (len+strlen(value));
puts(value);
}