我正在解析一个字符串(a char*
),我正在使用sscanf
它将字符串中的数字解析为双精度数,如下所示:
// char* expression;
double value = 0;
sscanf(expression, "%lf", &value);
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想继续通过常规方法解析字符串.我需要知道已经解析了多少个字符,sscanf
以便我可以从新的偏移量恢复手动解析.
显然,最简单的办法就是以某种方式计算出的字符数sscanf
分析,但如果没有简单的方法来做到这一点,我很开放的替代双解析选项.但是,我目前正在使用sscanf
它,因为它快速,简单,易读.无论哪种方式,我只需要一种方法来评估double并继续解析它.
如何使用变量指定scanf()
应读入的最大字符数?
例如使用printf()
你可以像这样使用*
#define MAXVAL 5
printf("Print at maximum MAXVAL chars: %.*s\n", MAXVAL, "myStringHere");
Run Code Online (Sandbox Code Playgroud)
这只会打印5个字符,如何才能scanf
在MAXVAL中读取?MAXVAL必须用作长度说明符.我不能简单地做
scanf("%5s", string);
Run Code Online (Sandbox Code Playgroud)
现在我只能想到读入一个大数组scanf
然后ssprintf
用来将字符串存储到我的长度有限的字符串中.然而,使用长度说明符会更容易.