所以我这个函数从命令行读取然后将其插入到树中,但它以某种方式只读取每一个字母而不是每个字母,我无法发现错误。有人可以帮忙吗?
char keys[100]={0};
initialize(&trie);
int c, wordnumber=0, letters=0;
while ((c=getchar()) != EOF )
{
c=getchar();
if (isalpha(c))
{
c = toupper(c);
keys[letters]=c;
letters++;
}
else
{
keys[letters]='\0';
if(keys[0]!='\0') insert(&trie, keys);
letters=0;
wordnumber++;
}
}
答案 0 :(得分:2)
getchar()获取下一个字符。你在每个循环中调用它两次。一旦处于while循环中的条件,然后一次进入循环的第一行。
摆脱循环中的第一行(c = getchar())并且它将起作用。
答案 1 :(得分:2)
您需要删除
c=getchar(); // read a char
原因是你已经通过这一行阅读了一次:
while ((c=getchar()) != EOF ) // read a char and check
答案 2 :(得分:0)
此!您正在使用getchar()
两次!进入while loop
和其他内部循环。
while ((c=getchar()) != EOF )
{
c=getchar();