必要时在 scanf() 中使用 %*c 清除缓冲区是否有任何危险。
例如:
char c;
for (int i = 0; i < 5; i++) {
scanf("%c%*c", &c);
}
或者
char* str;
char c;
int i;
scanf("%s", str);
scanf("%d%*c", &i);
scanf("%c%*c", &c);
是否应该担心缓冲区溢出或其他安全问题?似乎没有正式的文档说明在 scanf 中以这种方式在 C 中使用星号(编辑这不是真的),所以我很难找出输入的额外字符到底发生了什么。有没有更好的方法来清除 C 中的 scanf 缓冲区?