C语言scanf函数过滤换行符号吗?

2024-11-20 21:19:36
推荐回答(2个)
回答1:

刚刚做了下实验,事实证明scanf也不会处理'\n'的,scanf只会按格式符从缓冲区读取需要的数据,其他的是不会动的。
比如:
int a;

char c;

scanf("%d", &a);

c = getchar();

输入:123 回车

可以发现,getchar()函数没有阻塞等待用户输入,而此时若是按%c格式打印变量c,则会发现换行了

经过我后续的实验,也是可以证明,位于缓冲区队列首部,也就是scanf取缓冲区数据时第一个取到的是'\n',它是会无视的

暂时还没试 haiyangfenghuo 同学说的scanf()实参中带\n

回答2:

不在的,scanf语句遇到回车符会认为一行的输入结束。前提是你的scanf语句中不出现\n,如果出现了\n,那麻烦了,回车键怎么也清不掉了。