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

printf("\ninput No. : "); // " 输入号码 "
scanf("%d", & num[i]); // 从键盘输入 数组 num[] 的 1 个元素 ( 即 职工的 职工号 )
printf("input name: "); // " 输入姓名 "
getchar(); // getchar() 函数: 输入一个字符
gets(name[i]); // gets() 函数: 从终端输入一个字符串到字符数组

这段代码是 先输入一个号码: scanf( ), 接着输入 姓名如: Wang, 但必须先用getchar( )函数再用 gets( ) 函数才能正常输入 姓名

哈士奇WWW
浏览 119回答 3
3回答

一只萌萌小番薯

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

ITMISS

1、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”#include#includeusing 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#includeusing namespace std;main (){char m[20];gets(m); //不能写成m=gets();cout<}输入:jkljkljkl输出:jkljkljkl输入:jkl jkl jkl输出:jkl jkl jkl

潇湘沐

输入num后,有个回车getchar是过滤掉回车
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery