macOS กับคำสั่งภาษา C system("pause");

     หลาย ๆ คนคงเคยเขียนโปรแกรม "Hello World" ในภาษา C บน Windows กันมาแล้ว
แต่ทว่าน้อยคนนักที่จะเคยเขียน C บน macOS เหตุผลหนึ่งก็เพราะว่าค่าใช้จ่ายต่อเครื่องสูง ถ้าซื้อ Mac เครื่องนึงสู้ซื้อ Notebook หรือ PC ดี ๆ เสียดีกว่า นี่คือหนึ่งเหตุผลเล็ก ๆ แต่ไม่เล็กเลยครับ 

มาเข้าเนื้อหากันดีกว่า เมื่อเราได้ลองมาเขียน ภาษา C บน macOS เขียนไปเขียนมาซักพักเราจะเจอปัญหานี้คือใน macOS ไม่มีคำสั่ง "pause"

//system("pause") ก็คือคำสั่งที่จะหยุดการทำงานไว้จนกว่าผู้ใช้จะกดปุ่มบนแป้นพิมพ์

พอเรามา implement code จะได้


  1. #include<stdio.h>


  2. int main(){


  3. system("pause");
  4. return 0;
  5. }

และเมื่อเรา Compile และทำการ  Run โปรแกรมจะพบว่าไม่พบคำสั่ง "pause"


และเช่นเดียวกันใน macOS เวลาพิมพ์คำสั่งลงใน Terminal ของ Mac จะพบว่าไม่มีคำสั่ง "pause"

แต่ถ้าหากเรามาลองในฝั่งของ Windows ด้วย Code ที่เหมือนกันจะได้


และถ้าเราทำการ execute คำสั่ง "pause" ใน Command Prompt บน Windows
จะพบว่าทำงานได้อย่างปกติ





ดังนั้น จากกรณีข้างบนจะได้ว่า คำสั่ง "pause" ไม่มีใน macOS ถ้าเราต้องการจะใช้คำสั่ง "pause" ใน macOS จะทำอย่างไร?

คำตอบก็คือ เราสามารถใช้เทคนิคเล็ก ๆ ใน shell command
  • system("read -n 1 -s -p \"Press any key to continue...\"");

โดยคำสั่งข้างบนจะสามารถอธิบายได้ดังนี้
  • -n 1 คือการกำหนดจำนวน Character ที่จะอ่าน
  • -s คำนั่งนี้คือการให้พิมพ์ข้อความโดยที่ไม่มีข้อความขึ้นมาทางหน้าจอ เช่น ในกรณีของการ กรอก password ใน Terminal ใน macOS
  • -p \"Press any key to continue...\" คือการแสดงข้อความออกมาทางหน้าจอ เช่น คำสั่ง -p "HELLO" คือการแสดงข้อความ "HELLO ออกมาทางหน้าจอ

ผลจากการ Compile และ Run โปรแกรม ด้วยโค้ดต่อไปนี้
  1. int main() {
  2.     system( "read -n 1 -s -p \"Press any key to continue...\"" );
  3.     return 0;
  4. }

จะได้สิ่งที่เราต้องการออกมา

โดยสรุป เราสามารถทำให้โปรแกรมที่เราเขียนในภาษา C บน macOS สามารถใช้งานได้เหมือน system("pause") ใน windows สามารถทำได้โดยการใช้การเรียก shell command ตามโค้ดด้านล่างครับ
  • system("read -n 1 -s -p \"Press any key to continue...\"");
ref: https://discussions.apple.com/thread/2130719

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ความแตกต่างระหว่าง Razer Hammerhead Pro V1 VS Razer Hammerhead Pro V2 ใครที่กำลังจะเลือกซื้อต้องอ่าน!