【C】先输入一个整数后,再输入一个带空格的字符串

实现代码

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 连同它之前的字符全部读取并丢弃之后,也就相当于清除了输入缓冲区。

猜你喜欢

转载自blog.csdn.net/m0_50939789/article/details/129375343