Thaiadmin

ข้อสงสัยเล็กๆน้อยๆ เกี่ยวกับภาษา C ทำไมต้องมี getch(); ก่อนจบโปรแกรม

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ก๊าก ก๊าก

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

อย่างเช่น ผมจะเขียนโปรแกรม

#include<stdio.h>
main()
{
   printf("This is C program \n");
}

ปรากฎว่ามันรันไม่ได้ แต่พอผมใช้

#include<stdio.h>
main()
{
   printf("This is C program\n");
getch();
}

ปรากฎว่า สมารถรับได้

** ความจริงฟังก์ชัน getch(); มันเอาไว้รับค่า character หรือตัวอักษรเพียงหนึ่งตัว
ไม่ใช่เหรอครับ คล้ายๆกับ scanf("%s",&variable); ประมาณนั้น แต่มันไม่น่าเกี่ยว
กับตัวนี้มาปิดโปรแกรม
ใครพอจะทราบบ้างครับ

ขอบคุณมากครับ

ออฟไลน์ DisableAccount

  • *****
  • 3,690
  • 53
  • อยู่ด้วยความพอดี
    • my twitter
รันใน command prompt ดูสิครับ :)

sompobm

ที่ว่ารันไม่ได้มันขึ้นฟ้องว่าอะไรครับ
ส่วน getch(); ที่ใส่ไว้ท้ายก็เพราะว่าต้องการดูผลการรันอะครับ
ถ้าไม่ใส่ getch(); โปรแกรม พอ คอมไฟล์เสร็จ ก็จะจบเลย
แต่ถ้ามี getch(); จะค้างให้เรากด key ใดๆก่อนอะครับ

ผิดถูกไง แนะนำทีนะครับ ผมก็ไม่ค่อยเก่งเท่าไร อธิบายตามความน่าจะเป็นอะครับ

ก๊าก ก๊าก

มันไม่ได้ฟ้องขึ้นว่าอะไรเลยนะครับแต่ว่า
..

มันไม่มีอะไรเกิดขึ้นเลยครับ คือมันยังอยู่
หน้าเดิม ไม่ขยับไปไหน

แต่อันที่จริงไม่ได้เป็นปัญหาใหญ่อะไรนะครับ
ผมแค่สงสัยว่าทำไมต้องใส่ getch();

แต่ตอนนี้ทราบแล้ว ต้องขอขอบคุณทุกท่านมากครับ

ออฟไลน์ Jiggy

  • *
  • 838
  • 10
  • เพศ: ชาย
  • TH@min Membership
ที่ว่ารันไม่ได้มันขึ้นฟ้องว่าอะไรครับ
ส่วน getch(); ที่ใส่ไว้ท้ายก็เพราะว่าต้องการดูผลการรันอะครับ
ถ้าไม่ใส่ getch(); โปรแกรม พอ คอมไฟล์เสร็จ ก็จะจบเลย
แต่ถ้ามี getch(); จะค้างให้เรากด key ใดๆก่อนอะครับ

ผิดถูกไง แนะนำทีนะครับ ผมก็ไม่ค่อยเก่งเท่าไร อธิบายตามความน่าจะเป็นอะครับ


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

pinkbuff

มันไม่ได้ฟ้องขึ้นว่าอะไรเลยนะครับแต่ว่า
..

มันไม่มีอะไรเกิดขึ้นเลยครับ คือมันยังอยู่
หน้าเดิม ไม่ขยับไปไหน

แต่อันที่จริงไม่ได้เป็นปัญหาใหญ่อะไรนะครับ
ผมแค่สงสัยว่าทำไมต้องใส่ getch();

แต่ตอนนี้ทราบแล้ว ต้องขอขอบคุณทุกท่านมากครับ

หลักการการใช้ getch() เห็นด้วยกับคุณ sompobm ครับ และวิธีดูผลลัพธ์เมื่อรันโปรแกรมผ่านแล้วแต่มันไม่เกิดอะไรขึ้นเลยเพราะไม่มี getch(); ดักไว้ ให้คีย์ปุ่ม alt + F5 ดูผลลัพธ์ได้ครับ

ออฟไลน์ เทพห้านาที

  • ***
  • 665
  • 11
  • เพศ: ชาย
  • The quick brown mouse jumped over the lazy dog.
    • EECPMUT
มายืนยันคำตอบครับ ว่าที่ต้องใส่ getch(); เพราะต้องการดูผลลัพธ์ของการรันโปรแกรมครับ ถ้าคุณไม่ใส่คำสั่งนี้ เวลารันโปรแกรมเสร็จ ตัวโปรแกรมก็จะออกไปเลย ดูผลลัพธ์ไม่ทัน แต่ถ้าคุณใช้ getch(); ท้ายโปรแกรม จะทำให้โปรแกรมต้องรอรับการกดคีย์บอร์ดก่อน 1 ครั้ง ทำให้สามารถดูผลลัพธ์ได้ครับ ทดลองง่ายๆ เขียนโปรแกรม 1 + 2  แล้วให้มันพิมพ์ออกมาดูสิครับ(ในดอส) รับรองดูไม่ทัน
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย