تالار گفتمان مانشت
کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - نسخه‌ی قابل چاپ

کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - baziramzi.ir - 29 اسفند ۱۳۹۰ ۰۲:۵۱ ب.ظ

دوستان یه مشکلی هست خیلی وقته دارم جوابش رو نگرفتم . من وقتی با تابعی مثل getch() کار میکنم . و حلقه تاخیر delay (100) ایجاد میکنم . کاربر اگر ۱۰ تا کلید بزنه . هر ۱۰ کلید بعد از تاخیر اجرا میشه در صورتی که من میخوام بافرش بعد از delay خالی بشه . کسی میتونه کمک کنه ؟

مثال :
while (1){
char ch=getch();
if(ch=='a') {دستورات }
delay(100);
}



[/code]


در برنامه بالا کابر اگر دستش رو بزاره روی کلید a برنامه همینجوری با تاخیر زیاد انجام میشه ولی من میخوام بعد از delayبافر صفحه کلید پاک بشه ؟
آیا باید به غیر از getch() از یه تابع دیگه استفاده کنم یا یه تابع برای پاک کردن بافر هست ؟؟؟؟؟؟؟

کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - Jooybari - 29 اسفند ۱۳۹۰ ۰۳:۲۷ ب.ظ

فکر کنم دستور ()cin.ignore جواب بده.

RE: کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - baziramzi.ir - 29 اسفند ۱۳۹۰ ۰۴:۲۲ ب.ظ

ممنون ولی این تابع رو دیشب پیدا کردم و همینطوری بکار بردم ولی کلا ورودی قطع شده و دیگه چیزی از ورودی نمیگیره . من میخوام فقط بافر خالی بشه و باز هم ورودی بگیره .

من بیشتر c کار کردم c++ زیاد آشنایی ندارم . بنظرت این تابع رو جوری دیگه میشه بکار برد ؟ آرگومانهاشو عوض کرد یا جای دیگه ای از برنامه گذاشت ؟

کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - Jooybari - 01 فروردین ۱۳۹۱ ۱۲:۲۸ ق.ظ

درسته. من از ignore برای استفاده از cin بعد از getch استفاده میکردم. فکر کردم اینجا هم کار میکنه. جدی منم دیگه هنگ کردم. چندتا تابع زیر هستن:
cin.delbuf
cin.clear
cin.luckbuf cin.unluckbuf
فکر کنم بشه از همشون استفاده کرد ولی هیچکدوم با using namespace std کار نمیکنن و حتماً باید iostream.h رو اضافه کنیم. اگه هم از using namespace std استفاده نکنیم دیگه getch درست کار نمیکنه. من از vs6 استفاده میکنم. شاید روی ide شما مشکلی نداشته باشه.

RE: کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - baziramzi.ir - 01 فروردین ۱۳۹۱ ۱۲:۵۹ ق.ظ

مشکل با تابع Sleep() تا ۸۰% حل شد . با دستور Sleep(3000) بجای delay(3000) بجای چاپ ۲۰ کارکتر فشرده شده فقط ۲ کاراکتر نشان داده میشه که با کد نویسی میشه فقط یه بارش کرد . این تابع تو هدر windows.h موجوده .

کمک ؟ چجوری بافر صفحه کلید رو تو C خالی کنم ؟ - a.hooshmand - 07 فروردین ۱۳۹۱ ۰۸:۳۵ ب.ظ

برای خالی کردن بافر صفحه کلید در اکثر کمپایلرهای C دستور زیر
کد:
fflush(stdin);