如果我想获得之间的子串“/”,“@”,这个一会工夫:使用的sscanf()截断字符串
char buf[512] ="" ;
char src[512] = "iios/[email protected]";
sscanf(src, "%*[^/]/%[^@]", buf);
printf("%s\n", buf); //buf will be "12DDWDFF"
我怎样才能得到同样的结果“//^&# @iios //// 12DDWDFF @@@@ 122/& * @(@ ///“;
char buf2[512] ="" ;
char src[512] = "//^&#@iios////[email protected]@@@122/&*@(@///";
sscanf(src, "%*[4][^/]/%[4][^@]", buf2);
printf("%s\n", buf2); //buf2 gets nothing
或
sscanf(src, "%*[^////]/////%[^@@@@]", buf2);
printf("%s\n", buf2); //buf2 gets nothing
功能的'scanf'家庭是不是真的适合先进的解析,试图寻找可能合作,寻找例如其他功能''////“'和'”@@@@“'序列以及如何提取数据。 ['strstr'](http://en.cppreference.com/w/c/string/byte/strstr)和['strncpy'](http://en.cppreference.com/w/c/string/byte/strncpy)也许? –
如果开始和结束字符序列是唯一的,那么你可以使用'strstr()'获得指向所需字符串开始/结束的指针。如果开始/结束字符序列不是唯一的,那么提取由可变字符序列分隔的特定子字符串将非常困难。 – user3629249