C++getchar()的使⽤⽅法
1 getchar()简介
也就是说,getchar()函数以字符为单位对输⼊的数据进⾏读取。
2 getchar()读取缓冲区⽅式
在控制台中通过键盘输⼊数据时,以回车键作为结束标志。
当输⼊结束后,键盘输⼊的数据连同回车键⼀起被输⼊到输⼊缓冲区中。
在程序中第⼀次调⽤getchar()函数从输⼊缓冲区中读取⼀个字节的数据。
需要注意的是,如果此时在程序中第⼆次调⽤getchar()函数,因为此时输⼊缓冲区中还有回车键的数据没有被读出,第⼆个getchar()函数读出的是回车符。
例如如下代码
1char test1 = getchar();
2char test2 = getchar();
此时在控制台中输⼊字符“a”并且按下回车键,test1的值是字符“a”,⽽test2的值是“\n”,如图1所⽰。
图1 test1和test2的值
3 解决⽅法
可以使⽤rewind()函数来清理输⼊缓冲区中的数据。该函数的格式为
void rewind( FILE* stream );
其中,参数stream表⽰指向FILE结构的指针,即为指定的流。
该函数的作⽤是将⽂件指针移动到⽂件的起始位置处。
rewind()函数清理指定流中的错误指⽰符以及⽂件结束指⽰符。
将“2 getchar()读取缓冲区⽅式”中提到的代码修改为
记住我
1char test1 = getchar();
2 rewind(stdin);
3char test2 = getchar();
4 rewind(stdin);
在控制台中,⾸先输⼊字符“a”然后按下回车键。
getchar()函数从输⼊缓冲区中读取字符“a”,之后调⽤rewind()函数清理输⼊缓冲区中的数据,stdin表⽰输⼊缓冲区的指针;之后再在控制台中输⼊字符“b”,然后按下回车键,getchar()函数从输⼊缓冲
区中读取字符“b”,最后再次调⽤rewind()函数清理输⼊缓冲区中的数据。
此时,test1和test2的值如图2所⽰。
图2 test1和test2的值
发布评论