3 回答
TA贡献1795条经验 获得超7个赞
这个是因为输入缓冲区在输入完职工号后要求回车会产生一个换行符('\n'),在对字符或字符串进行输入时候(例如scanf("%c"),gets()...)会把这个换行符当作有效字符读入,所以造成还没输入姓名就跳过gets(name[i])而执行其它语句.getchar()的目的将多余的换行符吸收,无其它意义
或者将getchar()换成fflush(stdin)可以达到相同目的
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
- 3 回答
- 0 关注
- 118 浏览
添加回答
举报