关于用sscanf_s读入格式字符串的问题
我有一个很长的字符串需要读入,数据长度的内容是不确定的,但格式已知。
比如字符串如下:
“TYPE=3, Degree=2, CtrlPtCount=7,knots=[9424.777961,9424.777961,9424.777961,12566.370614,12566.370614,15707.963268,15707.963268,18849.555922,18849.555922,18849.555922]”
我的读取代码
int DMType, nDegree, nCtrlCount;
str += sscanf_s(str, "TYPE=%d, Degree=%d, CtrlPtCount=%d,", &DMType, &nDegree, &nCtrlCount);//这时只移动了三个字符,不对
//读取节点向量
str += sscanf_s(str, "knots=[");
int KnotsLen = nDegree+nCtrlCount+1;
double* Knots = new double[KnotsLen];
int i;
for (i = 0; i<KnotsLen-1; i++)
{
str += sscanf_s(str, "%lf,", &Knots[i]);//这时移动也不对
}
str += sscanf_s(str, "%lf]", &Knots[i]); //这时只移动也不对
问题的原因找到了,是因为sscanf_s函数的返回值不是读取字符串的长度,是读取的数据的项数。怎么才能让str读取后,移动到未读取的地方呢?