Tôi bối rối bởi một đoạn mã được tìm thấy trong một hàm Tôi đang học:C getchar vs scanf
char GetCommand(void)
{
char command;
do {
printf("Enter command (q=quit, n=new, l=list): ");
scanf("%c", &command);
Flush();
}
while ((command != 'q') && (command != 'n')
&& (command != 'l'));
printf("\n----------\n");
return(command);
}
void Flush(void) {
while (getchar() != '\n')
;
}
Những gì tôi không hoàn toàn hiểu đây là việc sử dụng các chức năng Flush()
. Ý tôi là, cuốn sách tôi đọc giải thích nó bằng cách nói rằng nó ngăn cản người dùng nhập nhiều hơn một ký tự đơn và sau đó có nhân vật đó đọc khi họ được nhắc nhập vào lần thứ hai.
Điều tôi không hiểu là cách Flush()
đang ngăn điều này xảy ra. Nó không làm bất cứ điều gì. Tất cả nó là một lệnh while
. (Trong khi điều này là đúng ...... những gì ?????) Không có ý nghĩa.
OHHHH, tôi không biết rằng getchar đã loại bỏ ký tự tiếp theo trong bộ đệm đầu vào - điều đó giải thích sự nhầm lẫn của tôi. Cảm ơn bạn. – startuprob