输入A-Z显示在第几位(简单代码)解决思路

输入A-Z显示在第几位(简单代码)
C/C++ code
#include<stdio.h>
#define EOF (-1)
int posi(char c);
int main(void)
{
    char ch;
    printf("Enter a character:\n");
    while((ch=getchar())!=EOF)
    {
        printf("The position of the character is:");
        posi(ch);
        putchar('\n');
        printf("Enter another character:\n");
    }
    return 0;
}
int posi(char c)
{
    if(c>='A'&&c<='Z')
        return c-64;
    else if(c>='a'&&c<='z')
        return c-96;
}


麻烦跑一跑,实在找不到问题所在了。。。为什么 printf("Enter another character:\n");要显示两次啊。。并且不出结果

------解决方案--------------------
用scanf,getchar等读取字符串或者字符的时候容易出现缓冲区残留'\n'的情况。
于是下次读取的时候,就会读取到'\n'.
为了防止这种情况,可以在scanf或者getchar函数之前加下面三条语句之一:
标准:rewind(stdin);
windows扩展:fflush(stdin);
暴力:stdin->_cnt=0;