আপনি যদি উইন্ডোজে থাকেন তবে আপনি এটি ব্যবহার করতে পারবেন kbhit()যা মাইক্রোসফ্ট রান-টাইম লাইব্রেরির অংশ। আপনি যদি লিনাক্সে থাকেন তবে আপনি kbhitএভাবে ( উত্স ) প্রয়োগ করতে পারেন :
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}
return 0;
}
আপডেট: উপরের ফাংশনটি ওএস এক্সে কাজ করে (কমপক্ষে, ওএস এক্স 10.5.8 - চিতাবাঘে, সুতরাং আমি এটি ওএস এক্স এর আরও সাম্প্রতিক সংস্করণগুলিতে কাজ করতে আশা করব)। এই सारটিটিkbhit.c লিনাক্স এবং ওএস এক্স উভয় হিসাবে সংরক্ষণ করা এবং সংকলন করা যায়
gcc -o kbhit kbhit.c
সাথে চালানো যখন
./kbhit
এটি আপনাকে কী-পিসের জন্য অনুরোধ জানায় এবং আপনি কোনও কী চাপলে (প্রবেশ বা প্রিন্টযোগ্য কীগুলিতে সীমাবদ্ধ নয়) প্রস্থান করে।
@ জনসইয়েব - দয়া করে আপনার "বিশিষ্ট ক্যানোনিকাল উত্তর" এবং "সমস্ত উদ্বেগ" দ্বারা বোঝাতে চাইছেন la এছাড়াও, "ক্রস-প্ল্যাটফর্ম" পুনরায়: এই প্রয়োগের মাধ্যমে kbhit()আপনি লিনাক্স / ইউনিক্স / ওএস এক্স / উইন্ডোজের সি ++ প্রোগ্রামে একই কার্যকারিতা রাখতে পারেন - কোন প্ল্যাটফর্মগুলি আপনি উল্লেখ করছেন?
@ জনসইয়েব এর জন্য আরও আপডেট: সি ++ অ্যাপ্লিকেশনগুলি হারমেটিক্যালি সিল করা সি ++ পরিবেশে বাস করে না। সি ++ এর সাফল্যের একটি বড় কারণ সি'র সাথে আন্তঃক্রিয়াশীলতা হ'ল সমস্ত মূলধারার প্ল্যাটফর্মগুলি সি ইন্টারফেসের মাধ্যমে প্রয়োগ করা হয় (এমনকি অভ্যন্তরীণ বাস্তবায়ন সি ++ ব্যবহার করছে এমন কি) তাই আপনার "উত্তরাধিকার" সম্পর্কে কথাবার্তা স্থির বলে মনে হয়। এছাড়াও, আমরা যেমন একটি একক ফাংশনের কথা বলছি, এর জন্য আপনার কেন সি ++ দরকার ("ক্লাস সহ সি")? যেমনটি আমি উল্লেখ করেছি, আপনি সি ++ এ লিখতে পারেন এবং সহজেই এই কার্যকারিতাটি অ্যাক্সেস করতে পারেন এবং আপনার অ্যাপ্লিকেশনটির ব্যবহারকারীরা আপনি কীভাবে এটি প্রয়োগ করেছেন সে বিষয়ে যত্নের সম্ভাবনা নেই ।