我正在編寫一個程序,充當服務器並且能夠通過終端與用戶交互。如果我從stdin中讀取我想要達到140個字符。 如果用戶輸入超過140個,我只想採用前140個字符而忽略其餘。
我嘗試像以下代碼:
struct timeval timeout;
fd_set readings;
char buf[140];
while (1) {
timeout.tv_sec = 15;
timeout.tv_usec = 0;
FD_ZERO(&readings);
FD_SET(STDIN_FILENO,&readings);
int rv = select(STDIN_FILENO+1,&readings,NULL,NULL,&timeout);
if (rv<0) {
cout << "ERROR select\n";
exit(1);
}
if (rv==0) {
cout << "Still Waiting...\n";
}
else {
cout << "A key was pressed\n";
if (FD_ISSET(STDIN_FILENO,&readings)) {
int num = read(STDIN_FILENO,&buf,140);
buf[num]='\0';
cout << buf << endl;
}
}
}
問題是 - 當我輸入超過140個字符,第一140個字符被印刷,但後來讀取()讀取數據的其餘部分在下一次迭代並打印它。 如何清除stdin,以便在下一次迭代中忽略其餘數據?
謝謝!
我如何讀取數據的指針的未知量未分配空間來存放呢? – 2011-05-19 17:00:29
您可以獲取輸入流的寬度,重新分配寬度爲+1的字符的指針變量,然後將輸入流讀入de指針。 – 2011-05-19 17:34:24