2014-01-23 148 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(); 
相關問題