どのように私は実行にGETCHARを使用してプログラムを入手できますか?

StackOverflow https://stackoverflow.com/questions/2002522

  •  18-09-2019
  •  | 
  •  

質問

私はN00B C K&Rオフ自分自身を教えようと合計Cです。私の質問は、一種のあきれるほど基本です。 OK、ここに行く:私は私が期待される出力の種類を与えるためにgetchar関数を使用してプログラムを取得することはできません。あなたが手にK&Rを持ってしまった場合、私は運動1.13にこだわっています。質問は、「その入力中の単語の長さのヒストグラムを印刷するプログラムを書く」と、この問題の私がいるので、私は偶数水平バージョンに取り組むことができない、行きます。

私はのDev-C ++(MinGWのコンパイラ)を使用して、コマンドラインから外れたプログラムを実行しているXP上でです。私の問題は、私は私のプログラムを実行しようとすると、私はからスキャンする文字を入力することが待って、私は入力行われ、Enterキーを押していたとき、それはの何でものをしない、です。私はそれが先に行くと、私は予想通り、ヒストグラムを印刷することを期待しています。あなたはコード内で見ることができるので、私はそれが何か、何も印刷が含まれている場合は、単に確認するために、CTR配列には何が印刷しようとすると、実際には、それも、ワード長をカウントアップしていないようです。

私はそれが私のコードや故障時のコマンドラインだ場合、私は見当がつかないN00Bです。しかし、私は<のhref =「http://clc-wiki.net/wiki/K%26R2_solutions:Chapter_1:Exercise_13#Solutions_by_Arnuld」のrel =「nofollowをnoreferrer」をコンパイルして実行しようとするので、それは、システムに何か疑い>モデルプログラムを、同じことが起こります。入力中のタイプが、Enterキーを押し、何も起こりません。 IはCtrl-Cした場合、時にはそれがモデル出力のような何も見えないことアスタリスクまたは2を出してくれる。他の回は、それが(ちょうどプロンプトに右戻って)何もしません。

ここでは運動のために私のコードです。私はこの上の一日を費やしてきたし、プログラミングを続けていくために私の能力を疑問視しています。誰もがこの穴の外に私を得ることができれば、私は本当に、本当にそれをいただければと思います!

また、私は、私は上記のモデルプログラムについて別の質問がありますが、私は、私は、それ自身の問題でそれを投稿するべきだと思います。おかげで、すべて:)

#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ループはEND-OF-行ない、ファイルの終わりを意味しEOFを探しています。

Windowsでは、ファイルの終わりをシミュレートするために、Ctrl-Zを入力する必要があります。

他のヒント

それはあなたが実際にどこでもC(ご入力)を格納する...またそれを印刷しているようには見えません。あなたは、文字列の大きさではなく、実際の文字を印刷しています。あなたは[i]は= cをCTR場合。どこか(それはあなたが配列に文字を追加することだ)、そして配列を印刷し、あなたの入力が表示されます。ああ、はい、Ctrl-Zキーについての回答も重要です。 あなたは言語に完全に新しいしている場合も、私は強くあなたの中のコンテンツの周りに括弧を置くためにあなたを促すだろう。あなたがコードでちょうど一見をする前に、しばらくになるだろうし、あなたがその周りに括弧を持っていない場合は、whileループと何しませんの範囲に落ちるかわからいます。

私は、コードには本当に何も悪いことを見ていないので、私はgccの下でそれをアップロードし、限り、あなたはあなたがEOF(CTRL-D)に入れて持っていることを覚えているように、正常に動作するように終了しますwhileループ。私は4つのラインに入り、私は答えの正しさについてのステートメントを作ることはできませんが、私がヒットするたびに、私はスペースに続いて、私が入力した文字の数と同数のシリーズを持って入力します。これはあなたのコードが何を言って正確に何である。

私はCTRL-Dを入力するときは、

、私は要約情報を得ました。繰り返しますが、私は、出力の正確性についての声明をするつもりはありませんが、あなたのコードで説明したように私は2つの主要なセクションを取得しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top