出现如图的现象,应该是因为,你输入一个字符的时候再敲回车时,其实是像输入缓冲区输入两个字符,一个是英文字母,另一个是回车换行符,当程序执行大小写转换时先换英文字母,再换回车符(我记得ASCII码值是13,因为13不满足前两个条件,所以输出error),你可以在while循环体的最后加一个getchar(),读走缓冲区的回车换行符,程序就可以出现你满意的结果了。如果满意的话记得点赞,谢谢,不懂也可以追问
在执行answer=getchar();
时,
用户输入
y<回车>
实际输入两个字符,getchar
读出了y,
缓冲区中还剩
<回车>,第二次循环时,answer=getchar();
直接从缓冲区中读出了
回车,不等
于y,所以跳出循环。
解决方法:
在answer=getchar();后再加一个
getchar(),
吃掉回车符。
answer=getchar();
getchar();