scanf:“%[^ \ n]”跳过第二个输入,但“%[^ \ n]”不跳过。为什么?
请考虑以下代码:
#include <stdio.h>int main (void){ char str1[128], str2[128], str3[128]; printf ("\nEnter str1: "); scanf ("%[^\n]", str1); printf ("\nstr1 = %s", str1); printf ("\nEnter str2: "); scanf ("%[^\n]", str2); printf ("\nstr2 = %s", str2); printf ("\nEnter str3: "); scanf ("%[^\n]", str3); printf ("\nstr3 = %s", str3); printf ("\n"); return 0;}
当它仅执行scanf
提示的第一站时。该计划不会停止下一个scanf
s。但是如果格式字符串从更改"%[^\n]"
为" %[^\n]"
(注意之前的空格%
),那么它可以正常工作。是否会自动接受先前输入缓冲区中的某些现有换行符?但冲洗stdin
并不能解决这个问题。
造成这种情况的原因是什么。
喵喵时光机
梵蒂冈之花
相关分类