ฟังก์ชัน getch ใน C ++

Fangkchan Getch Ni C



ในโดเมนของภาษาการเขียนโปรแกรม C และ C++ จะใช้วิธีการและไลบรารีธรรมชาติที่แตกต่างกัน ในบทความนี้ เราจะตรวจสอบเมธอด getch() ของ C++ อย่างใกล้ชิด ฟังก์ชัน getch() ถูกใช้เมื่อเราต้องการอ่านสตริงอักขระจากแป้นพิมพ์ของเรา และไม่ได้ฉายเอาต์พุตบนหน้าจอ ที่นี่ เราจะสำรวจฟังก์ชัน getch() นี้อย่างถูกต้องด้วยความช่วยเหลือของตัวอย่างและการพิสูจน์ที่ถูกต้องเพื่อให้คุณตระหนักรู้ วิธีการนี้ส่วนใหญ่ใช้งานได้ในสถานการณ์ที่ใช้คอนโซล (เอาต์พุต) ใน C ++ เพื่อรับอินพุตจากผู้ใช้

Getch() ใน C ++ คืออะไร?

ในภาษา C++ ไลบรารีชื่อไฟล์ส่วนหัว “cstdio” ส่วนใหญ่จะใช้สำหรับฟังก์ชัน getch() Getch() ยังถูกกำหนดไว้ใน “conio. ไฟล์ส่วนหัว h” ที่เป็นเฉพาะคอมไพเลอร์และเป็นฟังก์ชันที่ไม่ได้มาตรฐานเนื่องจากไม่ได้เป็นส่วนหนึ่งของมาตรฐานไลบรารี C ++ โดยสมบูรณ์ คำย่อของ getch คือ 'get character' และใช้เพื่อคงอยู่บนหน้าจอเอาท์พุตชั่วขณะหนึ่งจนกว่าผู้ใช้จะส่งข้อมูลอินพุต

ให้เราอธิบายแนวคิดนี้อย่างละเอียดโดยใช้ตัวอย่าง ที่นี่ เราจะเรียนรู้เกี่ยวกับไวยากรณ์ การใช้งาน และพฤติกรรมของเมธอด getch() ในภาษา C++ ด้วยความช่วยเหลือของสถานการณ์ที่เหมาะสม







สถานการณ์ที่ 1: วิธีใช้ Getch() ในแอปพลิเคชันที่ขับเคลื่อนด้วยเมนู

เรามาหารือเกี่ยวกับแอปพลิเคชันขนาดเล็กที่ขับเคลื่อนด้วยเมนูซึ่งเราจะแสดงรายการตัวเลือกต่างๆ แต่ละตัวเลือกได้รับการออกแบบมาเพื่อวัตถุประสงค์ที่แตกต่างกัน เช่น เมนูอาหาร ข้อมูลโค้ดของตัวอย่างนี้แนบมาดังต่อไปนี้:



#รวม
#รวม
#รวม
โดยใช้ เนมสเปซ มาตรฐาน -
ภายใน หลัก - - -
ถ่าน ทางเลือก -
มาตรฐาน - ศาล - 'เมนูร้านอาหาร: \n - -
มาตรฐาน - ศาล - '1. ตัวเลือกที่ 1: พิซซ่า \n - -
มาตรฐาน - ศาล - '2. ตัวเลือกที่ 2: เบอร์เกอร์ \n - -
มาตรฐาน - ศาล - '3. ตัวเลือกที่ 3: เค้ก \n - -
มาตรฐาน - ศาล - 'ป้อนตัวเลือกของคุณ:' -
ทางเลือก - รับ - - - // ผู้ใช้ป้อนข้อมูล  และ getch() อ่านอินพุตโดยไม่ต้องกดปุ่ม Enter
สวิตช์ - ทางเลือก - -
กรณี '1' -
มาตรฐาน - ศาล - - \n คุณเลือก 'พิซซ่า' \n - -
หยุดพัก -
กรณี '2' -
มาตรฐาน - ศาล - - \n คุณเลือก 'เบอร์เกอร์' \n - -
หยุดพัก -
กรณี '3' -
มาตรฐาน - ศาล - - \n คุณเลือก 'เค้ก' \n - -
หยุดพัก -
ค่าเริ่มต้น -
มาตรฐาน - ศาล - '\ไม่มีทางเลือก - ไม่มีคำสั่ง \n - -
-
กลับ 0 -
-

ขั้นแรก เราประกาศไลบรารีมาตรฐานที่จำเป็นเมื่อเริ่มต้นโปรแกรม เราสร้างตรรกะภายในฟังก์ชันหลัก และทุกสิ่งภายในฟังก์ชันหลักของโปรแกรมจะสามารถเรียกใช้งานได้ ที่นี่เราประกาศตัวแปร 'ตัวเลือก' ซึ่งมีประเภทข้อมูลเป็นอักขระ จากนั้นเราสร้างเมนูที่มองเห็นได้บนหน้าจอคอนโซล เรามอบ 'เมนูร้านอาหาร' ให้กับผู้ใช้โดยมีตัวเลือกต่างๆ เช่น 'พิซซ่า' 'เบอร์เกอร์' 'เค้ก' และ 'ไม่มีทางเลือก'



เราส่งผ่าน getch() ไปยังตัวเลือกตัวแปร เนื่องจากอินพุตของผู้ใช้ถูกจัดเก็บไว้ในตัวแปรนี้ และแสดงเอาต์พุตโดยอัตโนมัติตามตัวเลือกที่เลือก ในการเลือกตัวเลือกจากเมนู เราใช้ฟังก์ชัน switch() และส่ง “ตัวเลือก” ในฟังก์ชันนี้ ภายในวิธีการ 'สลับ' เราจะสร้างกรณีต่างๆ ให้กับแต่ละตัวเลือกแยกกัน ในเมธอด 'switch' ในภาษา C++ คำสั่งแบ่งจะใช้ที่ท้ายแต่ละกรณีเสมอ ซึ่งระบุจุดสิ้นสุดของคำสั่ง เมื่อเราคอมไพล์และรันมัน ผลลัพธ์จะแสดงบนหน้าจอคอนโซลที่แนบมาดังต่อไปนี้:





ตอนนี้ฟังก์ชัน getch() จะทำงานที่นี่ เมื่อผู้ใช้ป้อนตัวเลือก ฟังก์ชัน getch() จะเปรียบเทียบอินพุตนี้กับเคสสวิตช์ และจะแสดงเอาต์พุตหรือตัวเลือกบนคอนโซลโดยอัตโนมัติในทันที



ในภาพหน้าจอที่แนบมาก่อนหน้านี้ ผู้ใช้ป้อนตัวเลือก “2” และผลลัพธ์จะปรากฏบนหน้าจอเป็น “คุณเลือก 'เบอร์เกอร์'” การทำงานของ getch() จะถูกล้างในตัวอย่างนี้เมื่อผู้ใช้ป้อนข้อมูลอินพุตและเอาต์พุตที่คาดหวังจะแสดงบนหน้าจอคอนโซลแทนที่จะเป็นอินพุตที่ผู้ใช้กำหนดซึ่งแสดงบนคอนโซล

สถานการณ์ที่ 2: ยอมรับรหัสผ่านที่ซ่อนอยู่จากผู้ใช้โดยใช้ Getch()

ในสถานการณ์นี้ เราจะอธิบายแนวคิดเกี่ยวกับวิธีที่ผู้ใช้สามารถป้อนรหัสผ่านอย่างลับๆ และแสดงรหัสผ่านที่ป้อนบนหน้าจอคอนโซล ที่นี่เราใช้ฟังก์ชัน getch() เพื่อพักหน้าจอไว้จนกว่าผู้ใช้จะป้อนข้อมูลเข้า โปรดจำไว้ว่า getch() จะไม่แสดงอินพุตของผู้ใช้ เนื่องจากเคอร์เซอร์ไม่แสดงอินพุตบนหน้าจอคอนโซล ข้อมูลโค้ดของสถานการณ์นี้มีการกล่าวถึงดังต่อไปนี้:

#รวม
#รวม
#รวม
#รวม
#รวม
ภายใน หลัก - -
-
ถ่าน ปาสว - 8 - -
ภายใน -
มาตรฐาน - ศาล - 'กรอกรหัสผ่าน 8 หลัก:' -
สำหรับ - - 0 - - 7 - - - -
ปาสว - - - รับ - - -
มาตรฐาน - ศาล - - -
-
ปาสว - - - - \0 - -
มาตรฐาน - ศาล - - \n - -
มาตรฐาน - ศาล - 'เลิกซ่อนรหัสผ่านที่ป้อน:' -
สำหรับ - - 0 - ปาสว - - - - - \0 - - - -
มาตรฐาน - ศาล - - '%ค' , ปาสว - - - -
รับ - - -
กลับ 0 -
-

ตามที่เห็นในโค้ดที่กำหนด ให้เพิ่มไลบรารีมาตรฐานที่จำเป็นสำหรับการใช้งานฟังก์ชัน getch() และเพื่อแสดงเอาต์พุตบนหน้าจอ หน้าที่หลักของโปรแกรมนี้คือประกอบด้วยขั้นตอนต่าง ๆ ที่เราป้อนรหัสผ่านจากผู้ใช้และแสดงรหัสผ่านบนหน้าจอ เราต้องการตัวแปรอาร์เรย์ที่มีประเภทข้อมูลเป็น 'Char' ซึ่งมีขนาด 8 องค์ประกอบ ยกเว้นกรณีนี้ เรายังต้องการตัวแปรที่เก็บค่าการวนซ้ำด้วย

ที่นี่ เราใช้ 'For Loop' ซึ่งจะอ่านทุกจำนวนอินพุตของผู้ใช้ หากขนาดอาร์เรย์คือ '8' จากนั้น ผู้ใช้เพียงกดรหัสผ่านคีย์บนหน้าต่างคอนโซลอินพุตโดยใช้ลูปช่วย ภายในลูป “for” นี้ เราจะส่งฟังก์ชัน getch() ไปยังอาร์เรย์ passw[] ฟังก์ชั่นนี้จะค้างบนหน้าจอจนกว่าผู้ใช้จะป้อนรหัสผ่าน 8 ตัวอักษร ในทุกจำนวนลูป ให้พิมพ์ “*” ในทุกจำนวนอินพุตของผู้ใช้ และลูปจะปิดที่นี่

หลังจากนั้น เราใช้ลูป “for” อีกครั้งเพื่อแสดงรหัสผ่านที่ซ่อนอยู่โดยรับค่าจาก passw[] Getch จะยึดหน้าจอไว้โดยอัตโนมัติจนกว่าอินพุตของผู้ใช้จะถูกจัดเก็บไว้ในอาร์เรย์อย่างสมบูรณ์และแสดงรหัสผ่านบนหน้าจอ

คลิกที่ตัวเลือก 'คอมไพล์และรัน' เพื่อรันโปรแกรมและแสดงผลลัพธ์บนหน้าจอ

กรอกรหัสผ่าน 8 หลักบนหน้าจอ เมื่อป้อนข้อมูล 8 หลักเสร็จแล้ว ระบบจะแสดงรหัสผ่านที่พิมพ์บนหน้าต่างคอนโซลโดยอัตโนมัติ กดปุ่มคีย์บอร์ด 8 ครั้งแล้วพิมพ์รหัสผ่าน

หน้าจอเอาต์พุตค้างเพียงเพราะฟังก์ชัน getch() ฟังก์ชัน getch() เพียงพิมพ์ข้อมูลอินพุตบนหน้าจอตามที่แสดงในภาพหน้าจอที่แนบมาก่อนหน้านี้

บทสรุป

โดยสรุป getch() เป็นฟังก์ชันที่สำคัญที่สุดของการเขียนโปรแกรม C และ C++ ที่อำนวยความสะดวกให้ผู้ใช้สามารถหยุดอินพุตจากคีย์บอร์ดโดยไม่ต้องแสดงหรือไม่มีเคอร์เซอร์แสดงอินพุตบนหน้าจอ เนื่องจากไลบรารี่ที่ไม่ได้มาตรฐาน หากเราไม่ใช้ getch() ในโปรแกรม หน้าต่างคอนโซลจะแสดงขึ้นจนกระทั่งเวลาที่ต้องใช้ในการรันโปรแกรมเป็นมิลลิวินาที ในบทความนี้ เราได้อธิบายวิธีการนี้พร้อมตัวอย่างโค้ดที่เหมาะสม