为了账号安全,请及时绑定邮箱和手机立即绑定

如果只用一个 就 无法输入, 为什么? 请大家帮忙,谢谢!

如果只用一个 就 无法输入, 为什么? 请大家帮忙,谢谢!

哈士奇WWW 2022-11-04 18:14:42
printf("\ninput No. : "); // " 输入号码 "scanf("%d", & num[i]); // 从键盘输入 数组 num[] 的 1 个元素 ( 即 职工的 职工号 )printf("input name: "); // " 输入姓名 "getchar(); // getchar() 函数: 输入一个字符gets(name[i]); // gets() 函数: 从终端输入一个字符串到字符数组这段代码是 先输入一个号码: scanf( ), 接着输入 姓名如: Wang, 但必须先用getchar( )函数再用 gets( ) 函数才能正常输入 姓名
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这个是因为输入缓冲区在输入完职工号后要求回车会产生一个换行符('\n'),在对字符或字符串进行输入时候(例如scanf("%c"),gets()...)会把这个换行符当作有效字符读入,所以造成还没输入姓名就跳过gets(name[i])而执行其它语句.getchar()的目的将多余的换行符吸收,无其它意义
或者将getchar()换成fflush(stdin)可以达到相同目的

查看完整回答
反对 回复 2022-11-08
?
ITMISS

TA贡献1871条经验 获得超8个赞

1、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”
#include
#include
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jfksldfj jklsjfl
输出:jkl jfksldfj jklsjfl
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
2、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include”
#include
#include
using namespace std;
main ()
{
char m[20];
gets(m); //不能写成m=gets();
cout<}
输入:jkljkljkl
输出:jkljkljkl
输入:jkl jkl jkl
输出:jkl jkl jkl


查看完整回答
反对 回复 2022-11-08
?
潇湘沐

TA贡献1816条经验 获得超6个赞

输入num后,有个回车
getchar是过滤掉回车

查看完整回答
反对 回复 2022-11-08
  • 3 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信