1

私はK&Rの本を読んでいますが、演習の1つは、入力から空白、タブ、および新しい行を数えることです。しかし、次のコードを実行すると、最後の新しい行より上のすべての空白、タブ、および新しい行のみが正しくカウントされます。改行がない場合は、何もカウントされません。

hey how

戻り値

0 0 0

hey how
hey how
hey how

戻り値

2 0 2

スペースを使用する代わりにタブを使用した場合は、0 2 2になります。スペースとタブは改行に依存しているように見えますが、その理由はわかりません。では、これを機能させて、最後に改行を必要としないようにするにはどうすればよいですか?これが私のコードです。

#include <stdio.h>

/* counts blanks, tabs, and new lines */

main()
{
    int c, blanks, tabs, nl;
    blanks = 0;
    tabs = 0;
    nl = 0;

    while((c = getchar()) != EOF)
    {
        if(c == ' ')
            ++blanks;
        if(c == '\t')
            ++tabs;
        if(c == '\n')
            ++nl;

    }
    printf("\n%d\t%d\t%d\n" , blanks , tabs , nl);
}
4

1 に答える 1

3

別のキーボードショートカットを使用してください。プログラムを強制終了するのではなく、適切なキーの組み合わせでファイルの終わりをシミュレートする必要があります。

  • Ctrl+ C:プログラムを強制終了します。
  • Ctrl+ Z、:EnterWindowsでEOFを通知します。
  • Ctrl+ D:LinuxでEOFを通知します。
于 2013-02-01T04:29:11.760 に答える