找回密码
 中文实名注册
查看: 249|回复: 0

【】字符数组

[复制链接]

697

主题

1085

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22893
发表于 2021-8-20 09:26:58 | 显示全部楼层 |阅读模式
1 getchar()简介
getchar()是C语言中的函数,C++中也包含了该函数。getchar()函数的作用是从标准的输入stdin中读取字符。也就是说,getchar()函数以字符为单位对输入的数据进行读取。


2 getchar()读取缓冲区方式
在控制台中通过键盘输入数据时,以回车键作为结束标志。当输入结束后,键盘输入的数据连同回车键一起被输入到输入缓冲区中。在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。需要注意的是,如果此时在程序中第二次调用getchar()函数,因为此时输入缓冲区中还有回车键的数据没有被读出,第二个getchar()函数读出的是回车符。


例如如下代码


char test1 = getchar();

char test2 = getchar();


此时在控制台中输入字符“a”并且按下回车键,test1的值是字符“a”,而test2的值是“”,如图1所示



3 解决方法
可以使用rewind()函数来清理输入缓冲区中的数据。该函数的格式为


void rewind( FILE* stream );


其中,参数stream表示指向FILE结构的指针,即为指定的流。该函数的作用是将文件指针移动到文件的起始位置处。rewind()函数清理指定流中的错误指示符以及文件结束指示符。将“2 getchar()读取缓冲区方式”中提到的代码修改为


char test1 = getchar();

rewind(stdin);

char test2 = getchar();

rewind(stdin);


在控制台中,首先输入字符“a”然后按下回车键。getchar()函数从输入缓冲区中读取字符“a”,之后调用rewind()函数清理输入缓冲区中的数据,stdin表示输入缓冲区的指针;之后再在控制台中输入字符“b”,然后按下回车键,getchar()函数从输入缓冲区中读取字符“b”,最后再次调用rewind()函数清理输入缓冲区中的数据。此时,test1和test2的值如图2所示。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?中文实名注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-5-22 06:10 , Processed in 0.041427 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表