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 關注
- 170 瀏覽
添加回答
舉報