をいじくり回すために、Cでとてつもなく単純なプログラムを作成していgetchar()
ます。プログラムは、Enterキーを押すまで入力内容を出力し、行がそれぞれ80文字以下であることを保証します。これを行うために、入力された文字数の実行カウントを保持します。文字数が70に達すると、次に検出されるスペースによって改行が発生します。70〜80の間にスペースがない場合は、改行が発生します。これは非常に単純な実装であり、左右に最適化できることを理解していますが、覚えておいてください。
while ((c = getchar()) != '\n') {
if (lineLengthCount < 70) {
putchar(c);
lineLengthCount++;
}
else if (lineLengthCount < 80 && (c == ' ')) {
printf("%c\n", c);
lineLengthCount = 0;
}
else {
printf("%c\n", c);
lineLengthCount = 0;
}
}
問題は、c == ' '
条件付きが実際にスペースをチェックしていないように見えることです。次のような出力が得られます。
fitter happier more productive comfortable not drinking too much regula
r exercise at the gym three days a week getting on better with your ass
ociate employee contemporaries at ease eating well no microwaved dinner
ここで、スペースが検出されたときに行が切り捨てられることを期待していました。代わりに、70行目以降にどの文字を入力しても、新しい行が作成されます。私は何かが足りないのですか?' '
本当に何かキャラクターを意味しますか?