语法子集及解析思路:
number由负号,整数,小数,指数组成,只有整数是必须的,正号是非法的。
小数由小数点后是1或多个数字组成,指数由e/E后1或多个数字组成。
解析思路
先解析负号,然后解析0或者1后接n个数字,再解析小数,指数,最后再自行校验格式(strtod能转换json不支持的格式并返回错误代码)+strtod将字符串转至浮点数并存入结果。
实现过程及遇到的问题;
解释一下strtod函数:有两个参数,第一个是传入字符串str,第二个是字符指针ptr,被设置为指向str第一个数值后的下一个字符。
strtod作用是忽略空格,尽可能多的把字符串中的值转换为floating-point value。
举例看ptr指向的值,第一次运行完strtod指向20.30300后面的空格。
int main() {
char str[30] = "20.30300 312 This is test";
char