0
我試圖在C中編寫一個程序來打印通過getchar()輸入的單詞的長度。以下是代碼:來自getchar()的單詞的長度
#include<stdio.h>
#define IN 1
#define OUT 0
int main()
{
int c, chars, state, i;
int nlength[20];
state = OUT;
chars = 0;
for (i = 0; i < 20; ++i){
nlength[i] = 0;
}
while ((c = getchar()) != EOF){
if (c != ' ' && c != '\t' && c != '\n'){
state = IN;
++chars;
}
else if (state == OUT){
++nlength[chars];
chars = 0;
}
}
if (c == EOF){
++nlength[chars];
}
printf("\nLength of words = ");
for (i = 0; i < 20; ++i){
printf(" %d", nlength[i]);
}
printf("\n");
}
對於「aaa aaa」輸入的示例,應該輸出:0 0 0 2 0 0 0 ...。 但是,它輸出類似於0 0 0 0 0 0 1 0 0 ...。誰能告訴我它有什麼問題?
這是使用調試器來跟蹤代碼,看看究竟怎麼回事的絕佳機會。這樣做,很有趣! :-) – alk
@someuser你是什麼意思 – smudge49
首先,你爲什麼需要狀態變量,如果你不使用它?其次,你不增加當前單詞的長度,而是增加數組中的單詞索引。 – someuser