我是一名C n00b,试图在K&R上自学C语言.我的问题有点令人尴尬的基本问题.好的,这里说:我无法使用getchar获取程序,以提供我期望的那种输出.如果你碰巧有K&R,我会坚持练习1.13.问题是,"编写一个程序来打印输入中单词长度的直方图."我甚至无法处理水平版本,因为我遇到了这个问题.
我在XP上使用Dev-C++(mingW编译器)并在命令行下运行程序.我的问题是,当我尝试运行我的程序,它等待我进入字符从扫描,但是当我做输入并按下回车键,它不会做任何事情.我希望它继续按照我的预期打印直方图.实际上,它似乎甚至没有计算字长,因为你可以在代码中看到,当我尝试打印ctr数组中的内容只是为了看它是否包含任何东西时,什么都没有打印出来.
我是如此n00b,我不知道这是我的代码或命令行是否有问题.但我怀疑它与系统有关,因为当我尝试编译并运行模型程序时,同样的事情发生了.输入输入,按Enter键,没有任何反应.如果我是Ctrl-C,有时会吐出一个星号或两个看起来与模型输出完全不同的星号.其他时候,它没有做任何事情(只是回到提示).
这是我练习的代码.我花了一整天的时间来质疑我继续编程的能力.如果有人能让我走出这个洞,我真的非常感激!
另外,我还有一个关于我上面提到的模型程序的问题,但我想我应该在自己的问题中发布它.谢谢大家:)
#include//#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; }
R Samuel Kla.. 7
你的while循环正在寻找EOF,它代表文件结尾,而不是行尾.
在Windows上,您需要键入ctrl-z来模拟文件结束.
你的while循环正在寻找EOF,它代表文件结尾,而不是行尾.
在Windows上,您需要键入ctrl-z来模拟文件结束.