scanf: “% [^ \ n]” pula a segunda entrada, mas “% [^ \ n]” não. porque
Considere o seguinte código:
#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;
}
Quando executado apenas o primeiroscanf
pára para o prompt. O programa não para nos próximosscanf
s. Mas se a string de formato for alterada de"%[^\n]"
para" %[^\n]"
(observe o espaço em branco antes de%
), então funciona bem. Algum caractere de nova linha existente do buffer de entrada anterior é aceito automaticamente? Mas liberandostdin
não resolve isso.
Qual é a causa disso.