2014-01-23 79 views
0

所以我这个函数从命令行读取,然后将其插入树中,但它不知何故只读取每一个字母,而不是每一个字母,我不能发现错误。谁能帮忙?读取字的函数只读取每隔一个字母

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++; 
    } 
} 

回答

2

getchar()获取下一个字符。你每次循环调用两次。一旦处于while循环的条件中,然后一次处于循环的第一行。

摆脱循环中的第一行(c = getchar()),它会起作用。

+0

谢谢你,修好了 – deviance

2

您需要删除

c=getchar(); // read a char 

的原因是,你已经被这条线地读一遍:

while ((c=getchar()) != EOF) // read a char and check 
0

此!您正在使用getchar()两次!一旦进入while loop等内部循环。

while ((c=getchar()) != EOF) 
    { 
     c=getchar(); 
相关问题