C编程,scanf()函数

C programming, scanf() function

scanf 是否在其缓冲区或输入流中放置空格? 如果我说

scanf("%c %d %d", &character, &num1, &num2);

现在说

scanf("%c", &char2);

我知道 enter 会保留在缓冲区中,但空格算吗?

scanf("%c%d%d", &character, &num1, &num2);

这和第一部分有什么不同吗?

还有一件事。 用户按回车键后,我能以某种方式中断 scanf 吗?如果它在 ex 的 num1 之后按回车键。输入:i 5

我能以某种方式让 scanf 在此之后停止,即使它正在等待另一个输入吗?

scanf格式串中的一个space会消耗任何白色的space(如果有的话);格式说明符 %d 也将忽略实际数字之前的任何白色 space。所以 " %d""%d" 具有相同的效果。格式说明符 %c 不会忽略白色 space 而是读入它们,因此 " %c""%c" 不同。在您的情况下,%c 位于 scanf("%c %d %d", ...) 格式字符串的开头与 scanf("%c%d%d", ...).

具有相同的效果

如果您想允许在输入所有内容之前退出,我建议您使用 fgets 阅读完整的 "line",然后相应地解析输入,例如使用 sscanf of strtok.