سواللللل :)

beroozresani

New Member
سلام به همه دوستان
یه سوال داشتم: چرا تو برنامه ی زیر دستورات
gets
و
cin
باهم همخواني ندارند يعني چرا فقط يكيشون در حلقه اجرا ميشه زماني كه در يك حلقه باشند
من حدث ميزنم اين يك اشتباه در ساخت كامپايلرهای زبان سي هست ولي بعيد ميدونم
به هرحال من بايك ترفند تونستم حلش كنم ولي خب فقط يك ترفند بود و جوابي واسه اين مشكل پيدا نكردم.
کسی میدونه چرا؟
#include <iostream>
using namespace std;
int main()
{
int a;
char b[10];
for (int i=1 ; i<=5 ; i++)
{
cout <<"Number?\n";
cin >>a;
cout <<"String?\n";
gets(b);
}
return 0;
}
 

the_king

مدیرکل انجمن
B1 - هر مبحث باید عنوانی داشته باشد که خلاصه ای از موضوع آن مبحث باشد، از عناوین مبهم و کلی استفاده نکنید.

B2 - در عنوان مبحث از بکارگیری عبارات اضافی همانند کمک فوری، تو رو خدا کمک کنید و ... خودداری کنید.

دلیل ناهمخوانی اینه که بعضی از توابع کاراکتر های White-Space رو از توی بافر ورودی بر نمی دارند، سایر توابع
هم وقتی به White-Space می رسند دریافت ورودی رو خاتمه می دهند، راه حل اینه که بعد از خواندن هر ورودی
بافر ورودی رو با fflush خالی کنید تا چیزی توش باقی نمونه.

رجوع شود به : دریافت رشته با scanf بدون فاصله
 

جدیدترین ارسال ها

بالا