我是一个总C n00b试图教自己C关K &河我的问题是一种尴尬的初级。好的,这里是:我无法使用getchar获得程序来提供我期望的输出。如果您碰巧碰到了K &,我会被困在练习1.13中。问题是,“编写一个程序来打印输入中单词长度的直方图”,由于我遇到了这个问题,我甚至无法处理横向版本。如何使用getchar运行程序?
我在XP上使用Dev-C++(mingW编译器)并在命令行下运行程序。我的问题是,当我尝试运行我的程序时,它会等待我输入要扫描的字符,但是当我完成输入并按Enter时,它不会执行任何操作。我希望它能够按照我的预期打印直方图。实际上,它似乎不计算字长,因为正如代码中所见,当我尝试打印ctr数组中的内容以查看它是否包含任何内容时,什么都不打印。
我是如此的n00b,我不知道它是我的代码还是错误的命令行。但我怀疑这是系统的问题,因为当我尝试编译并运行a model program时,会发生同样的情况。输入输入,按回车,没有任何反应。如果我按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;
}
与你的问题没有关系,但考虑抛弃DevC++。它是越野车,不再被开发。一个很好的FOSS替代方案是http://www.codeblocks.org上的Code :: Blocks。但正如我所说的,这与您的问题无关 - 切换IDE不会解决问题。 – 2010-01-04 22:22:27
我有CB一段时间。你不会相信,但是有一段时间我只是不知道如何使用它特别是调试功能:在点击某个错误的按钮后,它停止向我显示我的代码中的错误列表。经过几天的文档挖掘,我放弃了,回到了唯一一个我知道我的方式的IDE:D – 2010-01-04 22:33:25
Anita,很抱歉听到这个消息。你有没有在http://forums.codeblocks.org上询问你的问题。或者你甚至可以尝试在SO上发布一个问题。坦率地说,任何事情都必须比DevC++更好。 – 2010-01-04 23:29:57