PDA

View Full Version : آرگومان از صفحه کلید بدون Enter



saeedIRHA
جمعه 18 فروردین 1385, 18:39 عصر
سلام!
از دوستان کسی میدونه چطور میتونم در C بدونه نیاز به فشار دادن Enter یک آرگومان رو به یک
تابع بفرستم؟!؟!
مثلاً وقتی مینویسم "X" همون موقع بدونه نیاز به فشار دادن Enter یک جا print کنه
"X" ؟؟؟؟ نمیدونم منظورم رو تونستم خوب بیان کنم یا نه !!
ممنون.

once4ever
جمعه 18 فروردین 1385, 18:52 عصر
نمیدونم منظورت این هست یا نه
ولی تو میتونی از getche (با نمایش کاراکتر) یا getch (بدون نمایش کاراکتر) استفاده کنی و اگه میخوای یه جمله بگیری میتونی داخل یک while اینکارو بکنی

saeedIRHA
جمعه 18 فروردین 1385, 19:12 عصر
سلام!
ممنون از جوابتون !
یک سؤال دیگه هم داشتم اونم اینکه چه طور حالا میتونم پایان While رو مشخص کنم ؟!
مثلاً میخوام While وقتی تموم بشه که کاربر کلید های "Ctrl+D" رو فشار داده باشه؟!
چه طور این کار امکان پذیره؟!

با تشکر

once4ever
جمعه 18 فروردین 1385, 19:16 عصر
خوب ctrl+D یک کد اسکی برمیگردونه ( نمیدونم چند) ولی تو همون c میشه فهمید و فقط ازاین راه میتونی چک کنی. کارسختی نیست بگردی پیدا میشه.
حقیقتش من 6سال پیش c کارمیکردم الان یادم نیست ;)

saeedIRHA
جمعه 18 فروردین 1385, 20:08 عصر
سلام!
دوست عزیز الان این روش رو امتحان کردم اما کاری که من میخوام رو نمیکنه!
چون این جا هم باید حتماً Enter زده بشه تا کاراکتر رو چاپ کنه!
من میخوام بدونه زدن Enter یعنی به صورته Real Time باشه و به محض فشار دادن یک کلید
اون رو نمایش بده!
ممنون از راهنمایتون.

Mahdi_Delphi
جمعه 18 فروردین 1385, 20:45 عصر
مگه از getche استفاده نمیکنید؟

getch کاراکتر رو نمایش نمیده اما getche نمایش میده.

Mahdi_Delphi
جمعه 18 فروردین 1385, 20:49 عصر
اگه بخوای کاربر به جای enter از CTRL+D استفاده بکنه باید در حلقه از شرطی استفاده بکنی که اگه کد کاراکتر 4 شد حلقه تموم بشه.

once4ever
جمعه 18 فروردین 1385, 21:08 عصر
سلام!
دوست عزیز الان این روش رو امتحان کردم اما کاری که من میخوام رو نمیکنه!
چون این جا هم باید حتماً Enter زده بشه تا کاراکتر رو چاپ کنه!
من میخوام بدونه زدن Enter یعنی به صورته Real Time باشه و به محض فشار دادن یک کلید
اون رو نمایش بده!
ممنون از راهنمایتون
نمیدونم چجوری امتحان کردی! ولی با این کد به محض کلید اونو نمایش میده و تا زدن . ادامه داره:

char ch;
while(ch!='.'){
ch=getche();
}

saeedIRHA
جمعه 18 فروردین 1385, 21:52 عصر
سلام!
حرف شما کاملاً درسته من هم همینطوری امتحان کردم،
اما مسئله که هست میخوام علاوه بر اینکه یک بار با getchar نمایش میده اون کاراکتر رو
در همان زمان در یک تابع دیگه مثلاً در Printf هم نمایش بده!

Mahdi_Delphi
جمعه 18 فروردین 1385, 22:25 عصر
یعنی میخواین هر کاراکتر دوبار چاپ بشه ؟
خوب printf رو هم داخل حلقه بزارین.

saeedIRHA
شنبه 19 فروردین 1385, 00:55 صبح
printf رو که داخل حلقه میزاریم بعد از زدن Enter شروع به چپ کردن میکنه!
من میخوام که همون موقع که مثلاً "X" رو فشار میدم 2 خط پایین تر "X" چاپ کنه!

once4ever
شنبه 19 فروردین 1385, 10:28 صبح
char ch;
while(ch!='x'){
ch=getche();
printf("\nYou input a %c\n",ch");
}
اینو اجرا کن- هربار کاراکتری رو بزنی دوبارنوشته میشه و منتظرکاراکتربعدی میشه مگه اینکه x رو بزنی.
خیلی ساده است. یکم دقت کن حتما متوجه میشی. :چشمک:

MMMYousefMMM
شنبه 26 فروردین 1385, 22:40 عصر
اینها راه حل شما نیست. راه حل شما فقط اسمبلی است که می تونی اونو در سی پیاده کنی و با فراخوانی وقفه مربوطه به راحتی کاراکتر فشار داده شده را یا در ثبات ذخیره کرده و یا نمایش دهید.

saeedIRHA
شنبه 26 فروردین 1385, 22:55 عصر
سلام دوستان،
ممنون از وقتتون!
لطف میکنی در مورده نحوه انجام دادنش با وقفها یک مقدار بیشتر راهنمای بفرماید؟
با تشکر