HI
Я пишу программу, которая действует как сервер и имеет возможность взаимодействовать с пользователем через терминал.если я читаю со стандартного ввода, я хочу до 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 символов печатаются, но затем read () читает остальные данные в следующей итерации и печатает их.Как очистить стандартный ввод, чтобы остальные данные были проигнорированы на следующей итерации?
спасибо !!