getchar()在缓冲区中读取第一个字符
scanf()读取缓冲区中\n前的字符串,导致缓冲区中仍然留有\n,而当getchar()时因为缓冲区中有东西就不在输入,直接读取,读取到了\n,导致无法重新从键盘上输入(Y/N),从而直接是确认失败
这里使用第一个getchar()本想着处理掉上面所述的\n,但由于scanf默认读取到空格就结束了,导致缓冲区里还有空格abc\n,然而第一个getchar()只读取到了空格,缓冲区中还剩abc\n没有处理完全,从而导致第二个getchar()无法从键盘上输入(Y/N)而直接读取到了缓冲区的a,导致了直接就是确认失败
正确的处理方式应该为使用循环搭配getchar()清空缓冲区
在这还提供一种scanf不是默认读取到空格结束的方法
scanf(“%[^\n]”, arr);
补充:getchar()读取一个字符返回字符ascll码值,读取失败返回eof
putchar()输出一个字符
switch(整型表达式)
case(整形常量表达式)
C语言分支和循环(个人笔记)
最新推荐文章于 2024-08-21 16:45:34 发布