c - 我正在使用此代码从文本文件中打印,但程序给了我“-1.#IND00”
问题描述
我有个问题。我正在使用此代码从文本文件中打印,但程序11732408.000000
每次都会给我一个不同的数字 - 例如 - 。ex
但是当是整数时我没有遇到这个问题。
#include <stdio.h>
#include <string.h>
int main() {
char example[] ="123.12/456 ";
double ex = atof(strtok(example, "/"));
printf("%lf", ex);
return 0;
}
解决方案
您忘记<stdlib.h>
包含包含atof()
.
尽管缺少声明,您的编译器还是会接受您的代码,并且它会错误地将原型推断为int atof(char *)
,这会在将返回值存储到 时导致未定义的行为ex
。
因此,虚假输出。
另请注意,l
格式中的%lf
是必需的,scanf()
但被忽略,printf()
因为参数在传递给可变参数函数时float
会隐式转换为。double
这是一个更正的版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char example[] = "123.12/456 ";
char *p = strtok(example, "/");
if (p != NULL) {
double ex = atof(p);
printf("%f\n", ex);
}
return 0;
}
推荐阅读
- sql-server - 如何从 python 与 mssql 交互?
- python - 如何正确比较时间(以分钟和小时表示)?
- solr - SolrJ 是在 Java 环境中使用 Solr 的推荐方法吗?
- delphi - 致命错误 EDebug.pas(3094):无法创建输出文件 P:\Trails\Gui\SD\obj\EDebug.dcu
- c# - Dapper QueryAsync 消息返回任务取消
- php - WooCommerce - 在结帐页面和电子邮件的本地取货时隐藏帐单地址
- javascript - TypeError:无法读取未定义的属性“setState”,以响应 axios 在反应 JS 中获取数据
- audiokit - 将 AKPlayer 与 AKSampleMetronome 同步
- php - 使用复选框插入数据 - PDO
- redirect - nginx 将所有图像重定向到新域