การส่งออกและนำเข้าข้อมูล
ผู้เขียน: Pakin Olanraktham
ในการเขียนโปรแกรม เราสามารถทำการสื่อสารกับผู้ใช้งานได้ ซึ่งจะมีอยู่สองประเภทคือ
- การส่งออกข้อมูล (Output): โดยในที่นี้ จะแสดงผลข้อมูลออกทางหน้าจอ
- การนำเข้าข้อมูล (Input): รับข้อมูลจากผู้ใช้
การส่งออกข้อมูล (Output)
ในภาษา C เรานิยมใช้ฟังก์ชัน printf()
ในการส่งออกข้อความตามที่ต้องการ โดยประโยคที่ต้องการจะส่งออกต้องถูกครอบด้วย ""
ภายในวงเล็บเท่านั้น
printf("Hello, World!"); // จะส่งออกคำว่า "Hello, World!"
printf("784"); // จะส่งออกคำว่า "784"
printf("IOI") // จะส่งออกคำว่า "IOI"
printf("\n") // จะเป็นการขึ้นบรรทัดใหม่
printf("Hi\n") // จะส่งออกคำว่า "Hi" แล้วขึ้นบรรทัดใหม่
แล้วถ้าเกิดเราอยากส่งออกค่าของตัวแปรล่ะ? เราสามารถทำได้ โดยจะต้องใช้ Format Specifier ดังตาราง
ประเภทตัวแปร | Format Specifier | ความหมาย |
---|---|---|
int |
%d |
จำนวนเต็ม |
long long |
%lld |
จำนวนเต็มขนาดใหญ่ |
float |
%f |
จำนวนทศนิยม (ส่งออกทศนิยม 6 หลัก) |
float (ทศนิยม 2 หลัก) |
%.2f |
จำนวนทศนิยมโดยปัดทศนิยมเป็น 2 หลัก |
double |
%lf |
จำนวนทศนิยม (ส่งออกทศนิยม 6 หลัก) |
char |
%c |
ตัวอักษร 1 ตัว |
โดยเวลาส่งออกข้อมูล จะมีโครงสร้างดังนี้
โดยที่ Format Specifier จะไปจับคู่กับตัวแปรตามลำดับ ซึ่งระหว่าง Format Specifier อาจจะมีข้อความอื่นๆ อยู่ด้วยก็ได้
int age = 20;
float price = 99.347;
char grade = 'A';
printf("Age: %d\n", age); // จะส่งออก "Age: 20" แล้วขึ้นบรรทัดใหม่
printf("Price: %.2f\n", price); // จะส่งออก "Price: 99.35" แล้วขึ้นบรรทัดใหม่
printf("Grade: %c\n", grade); // จะส่งออก "Grade: A" แล้วขึ้นบรรทัดใหม่
printf("All: %d, %f, %c", age, price, grade); // จะส่งออก "All: 20, 99.347000, A"
การนำเข้าข้อมูล (Input)
การนำเข้าข้อมูลในภาษา C ใช้ฟังก์ชัน scanf()
ฟังก์ชันนี้ใช้สำหรับรับข้อมูลจากผู้ใช้และเก็บลงในตัวแปร ซึ่งจะมีโครงสร้างดันนี้
คำเตือน
จำเป็นต้องใช้เครื่องหมาย &
หน้าชื่อตัวแปรสำหรับการนำเข้าข้อมูล แต่ไม่ต้องใช้สำหรับการส่งออกข้อมูล
ตัวอย่าง
เราต้องการนำเข้าข้อมูล 3 ตัวคือ อายุ (age), ราคา (price) และเกรด (grade) ซึ่งจะมาในรูปแบบ อายุ ราคา เกรด
(แต่ละข้อมูลจะถูกขั้นด้วยช่องว่าง)
int age;
float price;
char grade;
scanf("%d %f %c", &age, &price, &grade); // ข้อมูลที่นำเข้าจะถูกเก็บลงในตัวแปรตามลำดับ
คำแนะนำ
- เราสามารถรับค่าข้อมูลที่ไม่ได้ถูกขั้นด้วยช่องว่างได้ เช่น ข้อมูลเวลาจะมาในรูปแบบ
HH:MM:SS
เราสามารถรับค่าแยกชั่วโมง นาที วินาที ออกจากกันได้ โดยการscanf("%d:%d:%d", &h, &m, &s);
- กรณีข้อมูลถูกแบ่งด้วยบรรทัดใหม่ สามารถรับค่าพร้อมกันโดยแบ่งด้วย " " ได้ เช่น
scanf("%d %d", &a, &b);
โจทย์
Problem | Source | Difficulty | Editorial |
---|---|---|---|
A+B Problems | PROG | Very Easy | View |