อินพุตและเอาต์พุต ภาษา C

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

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

Standard Files


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

Standard FileFile PointerDevice
Standard inputstdinKeyboard
Standard outputstdoutScreen
Standard errorstderrYour screen


ตัวชี้ไฟล์เป็นวิธีการเข้าถึงไฟล์เพื่อวัตถุประสงค์ในการอ่านและเขียน ส่วนนี้อธิบายวิธีการอ่านค่าจากหน้าจอและวิธีการพิมพ์ผลลัพธ์บนหน้าจอ

ฟังก์ชัน getchar() และ putchar()


getchar int (void) เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ โดยการรับข้อมูลของฟังก์ชันนี้จะต้องกดแป้น enter ทุกครั้งที่ป้อนข้อมูลเสร็จ จึงทำให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย ถ้าต้องการนำข้อมูลที่ป้อนผ่านทางคีย์บอร์ดไปใช้งาน จะต้องกำหนดตัวแปรชนิด single character (char) ขึ้นมา 1 ตัว เพื่อเก็บค่าข้อมูลที่รับผ่านทางคีย์บอร์ด ในทางตรงกันข้ามถ้าไม่ต้องการใช้ข้อมูลที่ป้อนผ่านทางคีย์บอร์ดก็ไม่ต้องกำหนดตัวแปรชนิด char ขึ้นมา

int putchar (int c) เป็นฟังก์ชันที่ใช้ในการแสดงผลลัพธ์ออกจอภาพทีละ 1 ตัวอักขระ โดยลักษณะของฟังก์ชันนี้เป็นฟังก์ชันที่ต้องการ argument 1 ค่าที่เป็นข้อมูลชนิด single character (char) ตรวจสอบตัวอย่างต่อไปนี้ −

#include <stdio.h>
int main( ) {

   int c;

   printf( "Enter a value :");
   c = getchar( );

   printf( "\nYou entered: ");
   putchar( c );

   return 0;
}


เมื่อโค้ดด้านบนถูกคอมไพล์และรันแล้ว มันจะรอให้คุณป้อนข้อความ เมื่อคุณป้อนข้อความและกด Enter โปรแกรมจะดำเนินการและอ่านเพียงตัวอักษรเดียวและแสดงดังต่อไปนี้:

Enter a value : this is test
You entered: t


ฟังก์ชัน get() และ puts()


ฟังก์ชัน char *gets(char *s) จะอ่านบรรทัดจาก stdin ลงในบัฟเฟอร์ที่ชี้ไปที่ s จนกว่าจะมีการขึ้นบรรทัดใหม่หรือ EOF (สิ้นสุดไฟล์)

int puts(const char *s)  ฟังก์ชั่นเขียนสตริง ‘s’ และ ” ต่อท้ายบรรทัดใหม่เพื่อ stdout

หมายเหตุ: แม้ว่ามันจะได้เลิกใช้ไปใช้งานที่ได้รับฟังก์ชัน () แทนการใช้ที่ได้รับคุณต้องการใช้ fgets ()

#include <stdio.h>
int main( ) {

   char str[100];

   printf( "Enter a value :");
   gets( str );

   printf( "\nYou entered: ");
   puts( str );

   return 0;
}


เมื่อโค้ดด้านบนถูกคอมไพล์และรันแล้ว มันจะรอให้คุณป้อนข้อความ เมื่อคุณป้อนข้อความและกด Enter จากนั้นโปรแกรมจะดำเนินการและอ่านอินพุตและแสดงดังนี้ −

Enter a value : this is test
You entered: this is test


ฟังก์ชัน scanf() และ printf()


int scanf(const char *format, …) ฟังก์ชั่นอ่านข้อมูลจากสตรีมใส่มาตรฐาน stdin และสแกนการป้อนข้อมูลที่เป็นไปตาม format ที่จัดไว้ให้

int printf(const char *format, …) ฟังก์ชั่นที่เขียนออกไปกระแสออกมาตรฐาน stdout และผลิตออกให้เป็นไปตามรูปแบบที่มีให้

format อาจจะเป็นสตริงคงเรียบง่าย แต่คุณสามารถระบุ % d, c%, F%% s ฯลฯ เพื่อพิมพ์หรืออ่าน strings, integer, character หรือ float ตามลำดับ มีตัวเลือกการจัดรูปแบบอื่นๆ อีกมากมายที่สามารถใช้ได้ตามความต้องการ เรามาดูตัวอย่างง่ายๆ เพื่อทำความเข้าใจแนวคิดกันดีกว่า −

#include <stdio.h>
int main( ) {

   char str[100];
   int i;

   printf( "Enter a value :");
   scanf("%s %d", str, &i);

   printf( "\nYou entered: %s %d ", str, i);

   return 0;
}


เมื่อโค้ดด้านบนถูกคอมไพล์และรันแล้ว มันจะรอให้คุณป้อนข้อความ เมื่อคุณป้อนข้อความและกด Enter จากนั้นโปรแกรมจะดำเนินการและอ่านอินพุตและแสดงดังนี้ −

Enter a value : seven 7
You entered: seven 7

ที่นี่ ควรสังเกตว่า scanf() ต้องการอินพุตในรูปแบบเดียวกับที่คุณระบุ %s และ %d ซึ่งหมายความว่าคุณต้องระบุอินพุตที่ถูกต้อง เช่น “string integer” หากคุณระบุ “string string” หรือ “integer integer” ระบบจะถือว่าอินพุตไม่ถูกต้อง ประการที่สอง ในขณะที่อ่านสตริง scanf() จะหยุดอ่านทันทีที่พบช่องว่าง ดังนั้น “this is test”  เป็นสามสตริงสำหรับ scanf()

Leave a Reply

Your email address will not be published. Required fields are marked *