格式化字符串有关问题

格式化字符串问题
char cmdbuf[]= "set 1 hello world!";
我现在需要取出“hello world”(含有空格),hello前有多少个字符是未知的,
通过sscanf(cmdbuf, "set 1 %s", buf1)操作后取到的buf1是hello,因为遇到空格就结束了。
请问各位大侠有没有什么简单的方法能取出"hello world"?
------解决方案--------------------
楼主哪去了啊,我都来两次了。。。
sscanf(cmdbuf, "set 1    %[^!]", buf1);

试一下
------解决方案--------------------
你可以把"hello world"看成一个字符串,使用strstr库函数寻找,缺点是如果有多个hello world需要另外处理。还有,如果有"hello world"不是最后字符串,还需要另外处理。其实,再根据长度在最后补一个'\0'也是可以解决的。
------解决方案--------------------
C的基本库函数就有。当然不嫌麻烦转成Cpp的string也行。  
    包含文件:string.h
  函数名: strstr
  函数原型:extern char *strstr(char *str1, char *str2);
  功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
  返回值:返回该位置的指针,如找不到,返回空指针。
------解决方案--------------------
引用:
C的基本库函数就有。当然不嫌麻烦转成Cpp的string也行。
    包含文件:string.h
函数名: strstr
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。
……
格式化字符串有关问题
------解决方案--------------------
char cmdbuf[]= "set 1 hello world!";
string subStr = "hello";
string str = cmdbuf;
char * pFind = strstr(cmdbuf, subStr.c_str());
cout<<pFind<<endl;