当前位置: 首页 > 面试题库 >

字符串转换为数字的问题(strtod)

宫坚
2023-03-14
问题内容

我使用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函数的第二个参数很有用。

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 =='')


 类似资料:
  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 问题内容: 我正在尝试从EditText字段中将两个数字加在一起。到目前为止,我有下面的代码,我相信它会将EditText字段“ pos1_deg”和“ pos2_deg”转换为整数deg1和deg2。 然后,我可以执行以下操作将它们添加在一起 然后degSum寄存器保存deg1和2的和。 然后要输出回“结果” EditText,我需要将整数degSum更改为字符串。我认为正确的方法是使用以下代码

  • 所以我是计算机科学的新手,我们被要求做的一件事是尝试创建一个程序,首先将用户输入的一个单词转换成一个数字串,a=1,b=2,z=26等等,还有一些其他的事情,因为它们是扩展,我现在不想讨论。诚然,她说她不介意我们完成它,因为这是我们今天的第一节java课程。 有鉴于此,有人能给我一些关于如何做到这一点的建议吗?我不想让一段完整的代码完全做到这一点,因为我需要学习,因此非常感谢指导之手。到目前为止,

  • 是否有接受数字字符串的道具类型?如果我将prop直接传递给DOM元素,它不关心我是否使用prop={1}或prop="1",但是除了使用自定义回调之外,我如何制作一个接受它的匹配PropType? 我之前问过这个问题,但它作为React PropTypes的副本关闭了:允许一个prop使用不同类型的PropTypes,但我对接受任何字符串都不感兴趣-我只希望字符串被解析为数字。

  • 我想比较两个表达式。我从数据库中获得了数字字符串形式的数据数组,我需要将其转换为数字,然后再使用ngClass为样式设置提供条件。如何转换此类型。有什么想法吗?

  • 问题内容: 如何将经典字符串转换为f字符串? 输出: 所需的输出: 问题答案: f字符串是 语法 ,而不是对象类型。您不能将任意字符串转换为该语法,该语法会创建一个字符串对象,而不是相反。 我假设您想用作模板,因此只需在对象上使用方法: 如果要提供可配置的模板服务,请创建一个包含所有可以插值的字段的名称空间字典,并与调用语法一起使用以应用名称空间: 然后,用户可以在字段中的名称空间中使用任何键(或