sscanf函数的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:46:35
有个字符串char aaa[] = "....(前面可能还有很多项)ccc: 10\nddd: 20\neee: 32\n...(后面也还有很多项)";
我该怎么用sscanf把ddd: 20\n这里的20取出来?
sscanf(aaa, "ddd:%s\n", buf);
这样似乎不行。

//---------------------------------------------------------------------------

#include <stdio.h>

#include <string.h>

int main(void)
{
char aaa[]=")ccc: 10\nddd: 20\neee: 32\n";
char bbb[10];
sscanf(strstr(aaa,"ddd"),"%*[^0123456789]%[0123456789]",bbb);
puts(bbb);
return 0;
}
//---------------------------------------------------------------------------

该函数的百科资料,有示例,很详细。
http://baike.baidu.com/view/1364018.htm

用字符串查找可以实现
strstr (s1, s2);

吧ddd:20取出来放到buf中可以这样
strncpy (buf, strstr(aaa, "ddd:")+4, 2);

这里的+4的作用是从ddd:地址偏移4位得到20的地址
后面的2是拷贝长度。