私はC言語の初心者であり、 "The C programming language"という本を買って読んで、すべてのことをやり始めました。本には、文の行数、単語数、文字数を表示するコードがあります。これは本のコードです。数字を印刷しないプログラム
#include <stdio.h>
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c = '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
何らかの理由で、printfで印刷する必要がある値が表示されません。私は本当に何が間違っているのか分からない。 whileループでprintfを置くと数字だけが出力されますが、値が変わるたびに数字が出力されるため、これは正しいとは言えません。
いいですね。あなたがそれをデバッガに投げ込んで、あなたが到達するのを待っているprintfにブレークポイントを置くとどうなりますか?実際に出力を見る前にprintfが実行されていて、コマンドウィンドウが閉じている可能性はありますか? printfの後にgetchar()を追加してみてください。 –
c == '\ t'の代わりにc = '\ t'を書いたことに注意してください。 –
これは本の誤植でなければなりません。 printfの後にgetchar()も置いていますが、何も起こりません。 – captain