【发布时间】:2017-12-22 20:31:10
【问题描述】:
我只是复制了一些示例程序,这些示例程序取自 Kernighan 和 Ritchie 的C 编程语言一书。这是它的示例之一,一个声称将输入的 C 字符串转换为其等效浮点的程序:
#include <ctype.h>
/* atof: convert string s to a double */
double atof(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); i++); /* skip white spaces */
sign = (s[i] == '-') ? -1 :1;
if (s[i] == '+' || s[i] == '-')
i++;
for (val = 0.0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.')
i++;
for (power = 1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power *= 10.0;
}
return sign * val / power;
}
它确实可以编译,但我相信它不会运行,因为什么也没发生。当我尝试“运行”程序时,我收到以下弹出消息:
我哪里做错了?
此外,我从未见过书中显示的其他示例程序的输出。
【问题讨论】:
-
您的问题不在于 C,而在于名为 dev-c++ 的工具 - 这就是您需要在问题中标记的内容!
-
您的
main函数在哪里?告诉我们你应该在哪里使用atof函数并输出它。 -
另外:那个“程序”缺少 main 功能。它不是一个程序,而是一个编译单元。它有一个函数
atof,你应该在某个地方调用它。 -
哦不......我几个月来都遇到了麻烦......我没有意识到......我认为这是我的错......也许我把 dev-c++ 推得太硬了XD............
-
@AndreKampling 我不能......我只是在复制我从 Kernighan 和 Ritchie 的“C 编程语言”一书中看到的示例程序。我不知道该怎么做......对不起......