我是一个总的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,我得到的摘要信息。同样,我不会做出关于输出的正确性的任何声明,但我没有得到两个主要部分是在你的代码描述。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top