1

私はここが初めてで、少なくとも質問しています。ここで常に良い答えを見つけることができました。プログラミングに戻って C を再学習しようとしましたが、奇妙な問題に遭遇しました。

#include <stdio.h>

main()
{
    long nc;
    nc = 0;
    while (getchar() != EOF)
    ++nc;
    printf("%ld \n", nc);
}

実行すると、任意の数の文字を入力してEnterキーを押した後、ncの値が出力されません。Enter キーを押した後、もう一度入力を開始できますが、同じ話です。何が間違っているのか本当にわかりません。それが機能する唯一の方法は、++nc と printf の両方を括弧内に配置することです。しかし、Enter キーを押すと、値 1-to-nc が返されますが、これは私が望んでいるものではありません。私はちょうど nc が欲しいです。言うまでもなく、タイプも問題ではありません。前もって感謝します

4

4 に答える 4

0

ループ内で nc を出力したいだけの場合は、次のように print ステートメントをループに含める必要があります。

#include <stdio.h>

main()
{
    long nc;
    nc = 0;
    while (getchar() != EOF) {
    ++nc;
    printf("%ld \n", nc);
    }
}

[enter] を押した後、文字ごとに nc が 1 回出力されます。

nc を 1 行に 1 回出力する場合は、scanf を使用して次のようにします。

#include <stdio.h>
#include <string.h>

main()
{
    long nc;
    nc = 0;
    char buf[128];
    while (scanf("%s",&buf) > 0) {
      int len = strlen(buf);
      nc += len;
      printf("%ld \n", nc);
    } 
}
于 2013-06-14T21:51:41.890 に答える