我是一个总 C n00b 试图自学 C 关闭 K&R。我的问题有点令人尴尬。好的,这里是:我无法让程序使用 getchar 来提供我期望的那种输出。如果你碰巧手头有 K&R,我会坚持练习 1.13。问题是,“编写一个程序来打印其输入中单词长度的直方图。”由于我遇到的这个问题,我什至无法处理水平版本。
我在 XP 上使用 Dev-C++(mingW 编译器)并在命令行下运行程序。我的问题是,当我尝试运行我的程序时,它会等待我输入要扫描的字符,但是当我完成输入并按 Enter 时,它什么也没做。我希望它能够按照我的预期继续打印直方图。实际上,它甚至似乎都没有计算字长,因为正如您在代码中看到的那样,当我尝试打印 ctr 数组中的内容以查看它是否包含任何内容时,什么都不会打印。
我太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;
}