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提示的第一站时。该计划不会停止下一个scanfs。但是如果格式字符串从更改"%[^\n]"为" %[^\n]"(注意之前的空格%),那么它可以正常工作。是否会自动接受先前输入缓冲区中的某些现有换行符?但冲洗stdin并不能解决这个问题。
造成这种情况的原因是什么。
慕村9548890
喵喵时光机
梵蒂冈之花
随时随地看视频慕课网APP
相关分类