读取单词的函数只读取每隔一个字母

时间:2014-01-23 16:38:35

标签: c arrays algorithm word getchar

所以我这个函数从命令行读取然后将其插入到树中,但它以某种方式只读取每一个字母而不是每个字母,我无法发现错误。有人可以帮忙吗?

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

3 个答案:

答案 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();