输入A-Z显示在第几位(简单代码)解决思路
输入A-Z显示在第几位(简单代码)
麻烦跑一跑,实在找不到问题所在了。。。为什么 printf("Enter another character:\n");要显示两次啊。。并且不出结果
------解决方案--------------------
用scanf,getchar等读取字符串或者字符的时候容易出现缓冲区残留'\n'的情况。
于是下次读取的时候,就会读取到'\n'.
为了防止这种情况,可以在scanf或者getchar函数之前加下面三条语句之一:
标准:rewind(stdin);
windows扩展:fflush(stdin);
暴力:stdin->_cnt=0;
- 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;