PDA

View Full Version : مشکل در ساخت برنامه ای که کلمات را تکمیل کنه !



Red_RootKit
سه شنبه 21 شهریور 1385, 12:39 عصر
سلام به دوستان .
میخوام برنامه ای بنویسم برای شبیه سازی روترهای سیسکو .
من الان خودم اینو امتحان نکردم ولی اگه دقت کرده باشید توی dos یه فرمان را که میخوایید بزنید اگه نصف کاره کلید tab را بزنید خودش فرمان را تکمیل میکنه ... میخوام همچین کاری بکنم ....
مثال
فرمان enable در روترهای سیسکو .
میخوام بگم اگه کاربر کلمه ena را نوشت و دکمه tab زده شد اتوماتیک به وسیله تابع printf فرمان بشه enable !
حالا من خودم C کار میکنم .
مشکلم اینه که یه قطعه کد میخوام که بگم چطوری دکمه tab را تعریف کنم که بتونم بفهمم کاربر کلید tab را زده .
ممنون میشم اساتید کمک کنن !
کد اسکی داره ؟ خودش را باید بنویسم ؟ چطوریه ؟
ممنون .
باید مثلا بگم اگه tab مقدار 1 گرفت پس فشرده شده ؟
به خدا عجله دارم .
ممنون !
توی C

Red_RootKit
سه شنبه 21 شهریور 1385, 13:31 عصر
چه کنیم ؟
کسی جواب نمیده ؟

sh_roohani
سه شنبه 21 شهریور 1385, 14:38 عصر
سلام،
اولا شما برای اینکار دیگه نمی تونید با scanf کار بکنید. چون scanf کاراکتر tab رو فقط فضای خالی به حساب میاره. ثانیا من راهی نمی شناسم که بشه ورودی رو پیش از زدن کلید enter اصلاح کرد. از این دو مورد نتیجه می گیریم که شما باید ورودی رو کاراکتر به کاراکتر بخونی (مثلا با getch یا هر تابع ورودی دیگه ای که محیط شما پشتیبانی می کنه) و اونو به یه رشته اضافه کنی تا زمانی که کلید enter زده بشه. بعدشم اون وسط اگه یکی از کاراکترهای ورودی t\ بود، باید اونچه رو که تا حالا وارد شده به یه ترتیبی با الگوهای موجود مقایسه کنی و همه n الگویی رو که m کاراکتر اول اونا با m کاراکتر دریافتی شما یکسان باشه چاپ کنی (دقیقا مثل bash). بعد هم در خط بعد اونچه رو که تا به حال وارد شده چاپ کنی تا کاربر بتونه ورودی رو ادامه بده. خلاصه باید همه فرایند ورودی رو شبیه سازی کنی.

BitMap
چهارشنبه 22 شهریور 1385, 08:34 صبح
اگه یک کلاس c++ بدم مشکلی دارد؟
آخه خیلی وقته با سی کار نکردم رعایت قوانینش را یادم رفته!!!

ولی کلا:
1-اول با یک تابع که ورودی کارکتری میگیره ولی روی صفحه خروجی نداره ، یک کارکتر را بخوان
مثلا تابع: getcha();
2-بعد کنترل کن مقدار کارکتر جاری برابر است با 't\' یا مقدار عددی 7
اگر بود که کاراکتر tab است و متابق با ورودی جاری در جدول فرامین جست و جو کن
فرمان مناسب را پیدا کن و اگر فرمانی را یافتی از آخرین کاراکتر ورودی کاربر به بعد را
کامل کن
اگر نیافتی که ابتدا کارکتر قبلی که خواندی و tab نباشد را چاپ کن بعد دوباره به خواندن کاراکتر ادامه بده
مثلا:
INPUT>> e
PROCESS>> e!=TAB

INPUT>> en
PROCESS>> n!=TAB

INPUT>> ena
PROCESS>> a!=TAB

INPUT>> ena I---Pressed TAB-----I
PROCESS>> \t==TAB

Search 'ena'

Found ---> Print From index of 3 to end of string

Don't Found---> Continue get iput

راستی را می نوسیم و می گذارم همینجا !!!

Red_RootKit
چهارشنبه 22 شهریور 1385, 20:56 عصر
bitmap جان ممنون ولی کد ' \t ' عدد 9 هست نه 7 !