Ich versuche, ein Programm in C zu schreiben, um die Länge der Wörter zu drucken, die über getchar() eingegeben werden. Hier ist der Code:Länge der Wörter von 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");
}
Es sollte ausgeben, für ein Beispiel einer Eingabe von "aaa aaa",: 0 0 0 2 0 0 0 .... Es gibt jedoch so etwas wie 0 0 0 0 0 0 1 0 0 ... aus. Kann mir jemand sagen, was damit nicht stimmt?
Dies ist die perfekte Gelegenheit, einen Debugger zu verwenden, um den Code zu verfolgen und sehen, was wirklich los ist. Mach es, es macht Spaß! :-) – alk
@someuser was meinst du – smudge49
Zuerst, warum brauchen Sie State Variable, wenn Sie es nicht verwenden? Zweitens erhöhen Sie nicht die Länge des aktuellen Wortes, sondern einen Wortindex im Array. – someuser