实现代码
int row, col;
scanf("%d %d", &col, &row);
scanf("%*c");
char input[100];
scanf("%[^\n]", input);
scanf("%*c");
解释
scanf("%*[^\n]"); scanf("%*c");
第一个 scanf()
将逐个读取缓冲区中 \n
之前的其它字符,%
后面的 *
表示将读取的这些字符丢弃,遇到 \n
字符时便停止读取。此时,缓冲区中尚有一个 \n
遗留
第二个 scanf()
再将这个 \n
读取并丢弃,这里的星号和第一个 scanf()
的星号作用相同。由于所有从键盘的输入都是以回车结束的,而回车会产生一个 \n
字符,所以将 \n
连同它之前的字符全部读取并丢弃之后,也就相当于清除了输入缓冲区。