我必须阅读这样的一行:
0.000000 0.000000 -1.000000 -1.000000 0.230392 0.562016 -1.000000 -1.000000
使用strtok()
和while
循环,我试图提取每个浮点数并将其存储在我的程序中。将令牌转换为浮点数时出现问题。这是我的代码:
double p;
char* token = strtok(line, " ");
while (token) {
p = atof(token);
printf("atof('%s') = %f\n", token, p);
token = strtok(NULL, " ");
}
它输出:
atof('0.000000') = 0,000000
atof('0.000000') = 0,000000
atof('-1.000000') = -1,000000
atof('-1.000000') = -1,000000
atof('0.230392') = 0,000000 <<<---- ???????????
atof('0.562016') = 0,000000 <<<---- ???????????
atof('-1.000000') = -1,000000
atof('-1.000000') = -1,000000
看到问题了吗?为什么 atof 在传递 0 和 1 之间的字符串数字时返回 0?