讀取標準輸入直到字元 'q',統計三項指標:
\n 出現次數。#define IN 1 // 在單字內
#define OUT 0 // 在單字外
int state = OUT;
int nc = 0, nl = 0, nw = 0;
int c;
while ((c = getchar()) != 'q') {
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);
空白/\n/\t
OUT ----------> OUT
^ |
| 非空白 | 非空白
| v
IN ----------> IN
#include
#define IN 1
#define OUT 0
int main() {
int c, state = OUT;
long nc = 0, nl = 0, nw = 0; // 使用 long 避免溢位
while ((c = getchar()) != 'q') {
nc++;
if (c == '\n') nl++;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
nw++;
}
}
printf("行數: %ld 單字數: %ld 字元數: %ld\n", nl, nw, nc);
return 0;
}
$ ./wc_demo
Hello world
This is a test
q
行數: 2 單字數: 6 字元數: 27
wchar_t 與 getwc。