هل يأخذ Scanf () ' n' كبقايا إدخال من Scanf () السابقة؟
سؤال
في رمز C التالي:
char name[20];
int a;
int b;
for(i=0;i<10;i++)
{
printf("\nEnter name, a & b: ");
scanf("%s %d %d",name,&a,&b);
}
يفعل scanf
اقرأ في '\n'
دخلت في نهاية scanf()
في التكرار الأول ، لمدخلات التكرار الثانية؟
المحلول
scanf
يترك دفق الإدخال يشير إلى \n
. في حالتك لا تحدث فرقًا: في كل مرة يطلق عليها ، scanf
سوف يتحرك حتى يجد الشخصية التالية غير المتسابقين. لذا فإن إعطائها 10 خطوط من name, a, b
كما ستعمل المدخلات كما تتوقع.
لكن النظر في هذا:
scanf("%d", &a);
fgets(str, 20, stdin);
fgets
يقرأ حتى يجد أول حرف جديد ، لذلك str
سوف تحصل فقط على قيمة \n
, ، و fgets
إرادة ليس اقرأ السطر التالي من الإدخال.
لا تنتمي إلى StackOverflow