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并不能解决这个问题。
造成这种情况的原因是什么。
喵喵时光机
梵蒂冈之花
相关分类