私は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);
}