gpt4 book ai didi

c - strtod 返回 0

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:49 26 4
gpt4 key购买 nike

我一直致力于处理如下所示的输入文件的项目:

A 0.0345
B 0.3945
...
Z 0.2055

基本上,我正在阅读每一行,在阅读完该行之后,我想从字符串中拉出 double 值。我正在尝试使用 strtod(),每个人的示例似乎都很好地使用了它,但在我的示例中,它只返回 0。

这是我的代码:

for (count = 0; count < 26; count++)
{
char buffer[100]; /* Buffer for the line read by fgets */
char *letters; /* Stores the string calculated by strtod */
double relFreq = 0.0;

if (fgets(buffer, 100, stream) != NULL)
{
relFreq = (double)strtod(buffer, &letters); /* Since the format is A 0.0000, we're just grabbing the double */
*(sampleOne + count) = relFreq; /* Add the relFreq to the array */
}
}

通过使用调试器,buffer 拥有正确的数据,例如 A 0.0345\n 但是当 strtod() 返回一个值始终为 0。任何帮助将不胜感激!

最佳答案

由于第一个字符是非数字的,strtod 应该返回等于 bufferletters(第一个字符无效),表明什么都没有读过。

您应该能够通过传递 &buffer[2] 来解决此问题,其中数字开始:

relFreq = strtod(&buffer[2], &letters);

Demo.

关于c - strtod 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26765795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com