题
我是一个总的C的n00b试图教我自己ç关闭K&R。我的问题是一种令人尴尬的基础。 OK,这里有云:使用的getchar给我预期的输出类型,我不能让节目。如果你碰巧有K&R在手,我坚持锻炼1.13。现在的问题去,“写一个程序打印的单词长度的直方图的投入。”因为这个问题,我有我甚至无法应付的横版。
我在使用开发 - C ++(MinGW的编译器)和运行关闭命令行程序XP。我的问题是,当我尝试运行我的程序,它等待我进入字符从扫描,但是当我做输入并按下回车键,它不会做的任何的。我希望它继续下去和打印直方图如我所料。在现实中,它甚至不似乎计数字长,因为你可以在代码中看到,当我尝试打印有什么点击率数组中只是为了看它是否包含任何东西,任何打印作业。
我是如此的n00b我不知道,如果是我的代码或命令行的过错。但我怀疑它的东西与系统,因为当我尝试编译和运行的模型计划,同样的事情发生。在输入类型,按Enter键,没有任何反应。如果我按Ctrl-C,有时吐出一个星号或两个看上去一点也不像模型输出。其他时候,它不会做任何事情(只是去右后卫的提示)。
下面是我的演习代号。我花在这个一整天和我质疑我与编程进行的能力。我真的,真的很感激,如果有人可以让我离开这个洞!
另外,我有我上面提到的模型程序的另一个问题,但我想我应该张贴在其自己的问题。感谢所有:)
#include <stdio.h>
//#define 1 IN
//#define 0 OUT
int main () {
//start w/ state = OUT
int c = 0;
// int state = OUT;
int len = 0;
int ctr[12];
int i, j;
i = j = 0;
for (i = 0; i <12; i++)
ctr[i] = 0;
while ((c = getchar()) != EOF)
if (c != ' ' && c != '\t' && c != '\n') {
// state = IN;
len++;
printf("%d", len);
}
else {
ctr[len]++;
len = 0;
}
for (i = 0; i <12; i++)
printf("%d\n", ctr[i]);
for (i = 0; i <12; i++) {
printf("%d\n", i);
for (j = 0; j <= ctr[i]; j++)
printf("-");
printf("\n");
}
return 0;
}
解决方案
您while循环寻找EOF其代表结束文件,没有结束的行。
在Windows中,你需要键入CTRL-Z来模拟档案结尾。
其他提示
它看起来并不像你实际存储C(你的输入)的任何地方......也不打印。要打印的字符串的大小,而不是实际的字符。如果CTR [I] = C;地方(也就是你添加的字符数组),然后打印数组,你会看到你的输入。哦,是的,关于CTRL-Z的回答也很重要。 另外,如果你是完全陌生的语言,我会强烈建议你把你的周围,而内容括号。这将需要一段时间,您可以在代码只是一眼,知道什么会陷入while循环的范围,什么也不会,如果你没有它周围的括号。
我没有看到任何真正的错误的代码,所以我装起来下gcc和它似乎做工精细,只要你记住,你必须把一个EOF(CTRL-d)终止while循环。我进入4号线,虽然我不能对答案的正确性的任何声明,我每打一次进入我取得了一系列等于我输入的字符数的数字,后面加一个空格。这是你的代码表示,到底该怎么做。
当我进入CTRL-d,我得到的摘要信息。同样,我不会做出关于输出的正确性的任何声明,但我没有得到两个主要部分是在你的代码描述。