مشکل در تشخیص کلید space در ورودی
سلام
من باید یک برنامه بنویسم که وقتی کاربر کلید space رو زد چیزی چاپ بشه . مثلا چاپ بشه که کلید فاصله رو زده . مشکل اینه که وقتی این فاصله رو دستی داخل متغیر می نویسم به صورت کد زیر قبول می کنه ولی وقتی با صفحه کلید این دکمه رو فشار میدم تشخیص نمیده که دکمه space زده شده .کسی می تونه راهنماییم کنه ؟
#include <iostream>
#include"conio.h"
using namespace std;
int main ()
{
int b=' ';
cout<<"\n"<<(int)b;
return 0;
}
نقل قول: مشکل در تشخیص کلید space در ورودی
#include<conio.h> #include<ctype.h>
int main.....
int ch;
_cputs( "Type 'Y' when finished typing keys: " );
do
{
ch = _getch();
ch = toupper( ch );
} while( ch != ' ' );
_putch( ch );
_putch( '\r' ); /* Carriage return */
_putch( '\n' ); /* Line feed */
نقل قول: مشکل در تشخیص کلید space در ورودی
نقل قول:
سلام
من باید یک برنامه بنویسم که وقتی کاربر کلید space رو زد چیزی چاپ بشه . مثلا چاپ بشه که کلید فاصله رو زده . مشکل اینه که وقتی این فاصله رو دستی داخل متغیر می نویسم به صورت کد زیر قبول می کنه ولی وقتی با صفحه کلید این دکمه رو فشار میدم تشخیص نمیده که دکمه space زده شده .کسی می تونه راهنماییم کنه ؟
سلام.اول اینکه شما دیگه کاربر جدید نیستید که کدهاتون رو داخل تگ قرار نمیدید.گذاشتن کد داخل تگ کلهم 1 ثانیه هم زمان نمیبره.من اصلا متوجه کدتون نشدم چون خیلی بد ریخت بود :لبخند:
ولی اون طور که متوجه شدم شما می خواهید که وقتی کلید space زده شد یک پیغامی چاپ بشه.(مثلا چاپ بشه space).به خاطر همین کد زیر رو براتون نوشتم.
#include <conio.h>
#include <stdio.h>
using namespace std;
int main()
{if(scanf("\s"));
printf("space");
getch();}
با تشکر از دوست گرامی parvizwpf.من کدی رو که در پستتون ارسال کردید رو خیلی متوجه نشدم.و هر کاری کردم نتونستم کامپایل کنم.فکر می کنم برای کدی که دوستمون درخواست کردند خیلی نیاز به این همه کد نویسی نبوده باشه.اگر ممکن است راجع به کدتون توضیح بدهید.با تشکر.
نقل قول: مشکل در تشخیص کلید space در ورودی
سلام رضا .آره توضیح میدم. از اونجا که داشتم سرچ میکردم دیدم این کد رو. من جوابام طوریه که سوال کننده رو به جوابش نزدیک کنه. کد هم سرنخی هست برای نردیک کردن سوال کننده که چطور روی تک تک کاراکترها کنترل داشت باشه. شما رفتید سراغ اصل مطلب کاری که من معمولا انجام نمیدم و آدمها رو ترغیب به تحقیق میکنم. بحر حال متشکر از یادآوری.
نقل قول: مشکل در تشخیص کلید space در ورودی
سلام رضا! دوستمون گفتن هنگامی که کاربر اسپیس وارد کرد اتفاقی بیافته اما کد شما به شکلیه که وقتی کاربر اسپیت رو وارد کرد بعد اینتر رو زد کد اجرا بشه :)
منم مشتاقم بدونم بهترین روش چجوریه :)
نقل قول: مشکل در تشخیص کلید space در ورودی
با تشکر از شما
مشکل من اینه که انگار کامپایلر سی پلاس پلاس کد while( ch != ' ' ); رو نادیده می گیره یعنی وقتی من کلید space رو فشار میدم حلقه ی while اجرا نمیشه ولی به جای این فاصله اگر مثلا
while( ch != 'm' ); بگذارم حلقه مشکلی نداره و اجرا میشه .
"s/" هم که می گذارم کلا قبول نمی کنه .
نقل قول: مشکل در تشخیص کلید space در ورودی
#include <stdio.h>
int main()
{
char c = getch();
if(c == ' ')
puts("Space entered!");
}
نقل قول: مشکل در تشخیص کلید space در ورودی
نقل قول:
سلام رضا! دوستمون گفتن هنگامی که کاربر اسپیس وارد کرد اتفاقی بیافته اما کد شما به شکلیه که وقتی کاربر اسپیت رو وارد کرد بعد اینتر رو زد کد اجرا بشه :)
منم مشتاقم بدونم بهترین روش چجوریه :)
من سوالی رو که از جناب parvizwpf کردم به صورت کنایه نبود.بلکه واقعا متوجه نشده بودم و می خواستم بدونم.
منظورم از بهترین روش این بود که کد کم تر باشه.ولی با همون نتیجه.البته در مورد ایرادی که گرفتید درست می فرمایید.الان که دوباره تست کردم کد ناقص بود اون هم از جنس چینی :لبخند:
اما کدی که جناب hadi0x7c7 گذاشتند دقیقا خود خودشه . و البته تعداد دستورات کمی هم داره. و این خودش یک امتیاز هست.