【发布时间】:2013-07-24 08:35:13
【问题描述】:
我正在跟随一本关于 C 的书来学习它,并且我正在编写书中的所有代码以继续学习,最新的与数组有关的代码应该说明有多少空格、制表符等。那里是,但是当我执行它时,什么都没有显示,它只是空白,因为我可以输入一些东西然后按 Enter 并且没有任何反应,它应该告诉我每件事有多少吗?
我太新了,不明白这个程序是否真的应该输出任何东西,所以我想我会把它贴在这里并得到一个意见,它编译和运行都很好,没有错误,但是这本书有点指它输出东西,但是当我运行它并输入东西时没有任何反应,可以永远输入东西。
这里是代码
#include <stdio.h>
int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
printf("digits =");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[1]);
printf(", white space = %d, other = %d\n", nwhite, nother);
}
【问题讨论】:
-
你输入过EOF吗?
-
这看起来很可疑:
printf(" %d", ndigit[1]);...你不是要打印digit[i]吗? -
如果您使用的是 linux,请使用 CTRL + D 提供 EOF。
-
是的,应该是“i”的 Joachim Pileborg 并欢呼 Jeyaram 成功了,为什么在 linux 上我们需要使用 CTRL + D?谢谢大家!
-
你的书有没有教你对
main没有返回类型?一本好的现代书籍会向您展示int main(void)以了解main的规范。