C++的gets函數(shù)無法輸入就結(jié)束
#include<string.h>
#include<iostream>
using namespace std;
char s[100];
int main()
{
int p1,p2,p3;
cin>>p1>>p2>>p3;
gets(s);
}
敲完1 2 1,,把p1,、p2、p3輸入之后回車,,直接結(jié)束程序,。我下面還有個gets(s)呢,,怎么就直接結(jié)束了呢,?
c/c++有輸入緩沖的,你用
cin>>p1>>p2>>p3;
時,后面的回車不會被讀取,會留在輸入緩沖中
你若再用
cin >> s;
是沒有問題的,但你用
gets,getchar()等,它們都只能讀到一個回車
而解決方案有多個,
初級的會在gets加一個
getchar(); //先讀掉一個回車
而中級的可用C的函數(shù),在gets加一個
fflush(stdin); //清除輸入緩沖
而高級的同樣是清除輸入緩沖,只是用C++標(biāo)準(zhǔn)函數(shù)
cin.sync();
當(dāng)然,我從不建議C/C++的輸入函數(shù)混用
改你的gets(s)為
cin >> s;
若要接收空格,可用
cin.get(s,100); //這樣安全又標(biāo)準(zhǔn)
回車符被gets讀入
相關(guān)推薦
便查問答是一款實用的網(wǎng)絡(luò)熱門知識問答平臺,,專注于分享你不知道的知識、經(jīng)驗及生活問題,,在這里所有人都能找到答案歡迎網(wǎng)友參與討論,。