我使用strtod()函数将环境变量提取为字符串,然后使用strtod将其更改为double:
enter code here char strEnv[32]; strncpy(strEnv, getenv("LT_LEAK_START"), 31); // How to make sure before parsing that env LT_LEAK_START is indeed a number? double d = strtod(strEnv, NULL);
现在,我要确保用户输入的此数字是数字,而不是字符串或特殊字符。我如何确定呢?
代码段将有很大的帮助。
提前致谢。
该strtod函数的第二个参数很有用。
strtod
char *err; d = strtod(userinput, &err); if (*err == 0) { /* very probably ok */ } if (!isspace((unsigned char)*err)) { /* error */ }
编辑:添加示例
该strtod函数尝试将第一个参数的初始部分转换为双精度,并在没有更多字符或无法使用双精度字符的情况下停止。
输入结果 ---------- ---------------------------- “ 42foo”将返回42 并让err指向“ foo”(* err =='f') “ 4.5”将返回4.5 并让err指向空字符串(* err == 0) “ 42”将返回42 并让`err`指向空格(* err =='')