私は「The C Programming Language」(K&R) に取り組んでいて、演習の 1 つを行いました。課題は、EOF までのスペース、タブ、および改行の数を出力することでした。素晴らしい、それはうまくいきます。しかし、私は賢くなり始め、実際に「スペース」または「タブ」または「改行」と言う以下のprintf()を追加しました。入力するとそれが出力されるはずですが、Enter キーを押したときにしか while ループが実行されないようです。
コード:
#include <stdio.h>
int main(int argc, const char * argv[])
{
int c, nb, nt, nl;
nb = nt = nl = 0;
while ((c = getchar()) != EOF) {
if (c == ' ') {
nb += 1;
printf("Space\n");
}
if (c == '\t') {
nt += 1;
printf("Tab\n");
}
if (c == '\n') {
nl += 1;
printf("New Line\n");
}
}
printf("%d spaces, %d tabs, %d newlines",nb,nt,nl);
return 0;
}
出力:
a b
Space
New Line
c d e
Space
Space
New Line
f g
Tab
New Line
3 spaces, 1 tabs, 3 newlines
私が期待していたのは、次のようなものでした。
a Spaceb
New Line
c Spaced Spacee
New Line
f tabg
New Line
3 spaces, 1 tabs, 3 newlines
では、なぜ期待したものではなく、得たものを得るのですか?
そして、はい、もし私が本当に気にかけていたら、「スペース[s]」、「タブ[s]」、「改行[s]」という言葉を値に基づかずに複数形にしますが、それは単なる演習です. ;)