【发布时间】:2011-04-22 19:28:37
【问题描述】:
我有一个关于 scanf 函数如何工作的问题。在这个程序中:
#include <stdio.h>
int main(void) {
int x;
char y;
printf("Write a number: ");
scanf("%d", &x);
printf("Write a character: ");
scanf(" %c", &y);
printf("%d", x);
printf("%c", y);
return 0;
}
如果用户输入一个数字然后按回车键,那么 scanf 函数将从格式字符串中看到应该是一个数字。当用户点击输入时,它不会读取换行符并将其放回缓冲区中。然后,由于我接下来要读取一个字符,因此我需要在格式字符串中包含一个空格,因为 scanf 函数会采用换行符并放入 y 变量。
但是我只是好奇如果用户写了类似的东西会发生什么
j344lk4fjk388
它会把所有东西都放回缓冲区吗?缓冲区中“放回”的所有内容都会被我程序中的下一个 scanf 函数自动读取吗?
【问题讨论】:
-
为什么不编译程序,然后输入它来找出答案?如果您需要查看目前尚不可见的情况,请添加日志记录语句或使用调试器。
标签: c