انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: khajavi در 17 تیر 1387، 11:12 قظ
-
برنامه ای نوشتم که با mysql ارتباط برقرار می کنه. اما مشکلی که دارم اینه که نمیدونم چجوری رمز عبور را به صورت ستاره یا نامشخص (مثل وقتی که sudo را اجرا می کنیم) از خط فرمان کاربر دریافت کنم؟
اگه حوصله توضیح ندارید بگید مربوط به چه مبحثی میشه و keyword بدید خودم جست و جو می کنم.
-
توی اسکریپتهای شل که از دستور read استفاده میکنن به همراه اوپشن s- اما ++C رو نمیدونم شاید بتونید از همین دستور read استفاده کنید. شایدم مجبور بشید سورس دستور read رو بخونید و توی برنامتون استفاده کنید.
-
می تونی هر کاراکتر رو که می خونه بلافاصله اون رو پاک کنه یا جاش یه ستاره چاپ کنه ابدا پیچیده نیست که نیاز به توضیح داشته باشه
-
می تونی هر کاراکتر رو که می خونه بلافاصله اون رو پاک کنه یا جاش یه ستاره چاپ کنه ابدا پیچیده نیست که نیاز به توضیح داشته باشه
بابت راهنماییتون ممنون. حالا داره یه چیزایی یادم میاد. یه تابع بود همین کار را می کردم.
-
خوب هر کاراکتر رو به صورت تک تک دریافت کن و به جای نمایش اون کاراکتر ستاره بذار یادش بخیر زمان دبیرستان از این چیزها زیاد می نوشتم ;)
-
در c++ استاندارد هيچ تابعي براي كاري كه شما در نظر داريد وجود ندارد . اين كه تعدادي از دوستان مي گن همچين كاري كردن احتمالا تو ويندوز بوده و با استفاده از تابع getch كه براي conio.h فكر كنم بود . در نتيجه براي كاري كه مي خواهيد انجام بديد حتما بايد از يك كتابخانه خارجي و كمكي استفاده كنيد البته فكر مي كنم كه اين هدر رو تو لينوكس هم پياده سازي كردن
http://www.google.com/search?q=conio.h+in+linux&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
-
cin.get()
-
از ncurses استفاده کنید و خودتون رو راحت کنید!
-
هم میشه از ncurses استفاده کرد و هم میشه از stty -echo استفاده کرد. هر جا که بخوای رمز عبور بگیری میتونی از کد system( "stty - echo" ) استفاده کنبم
مثال:
system("stty - echo " )
cin >> password
-
در صفحهی ۱۳۵ از کتاب Advanced Linux Programming (http://www.advancedlinuxprogramming.com/) راه اصولیتر این کار (که خوندن از terminal device مربوطه، مثلاً dev/tty1/ هست) رو توضیح داده.
برای این منظور یک تابع به اسم getpass هم در unistd.h وجود داره که منسوخ (obsolete) شده و بهتر هست ازش استفاده نکنیم.