K&R演習[1-8]

課題

空白、タブ、改行を数えるプログラムを書け。

ソースコード

#include <stdio.h>

int main(void)
{
    int c, ns, nt, nl;

    ns = nt = nl = 0;
    while ((c = getchar()) != EOF) {
        if (c == '\n')  ++nl;       /* 改行 */
        if (c == '\t')  ++nt;       /* タブ */
        if (c == ' ')   ++ns;       /* スペース */
        if (c == EOF) break;
    }

    /* 印字 */
    printf("Line:%d, Tab:%d, Space:%d", nl, nt, ns);
}

実行内容

「fdsa」、Tabを3回、スペース2回、Enter。
その後Ctrl+C (getchar()が異常終了してEOFを返す)

実行結果

fdsa
Line:1, Tab:3, Space:2

補足

Ctrl+Cにより異常終了した場合は、それまでの入力は無視される。
hiroyuki8murai.hatenablog.com