อินพุต เอาต์พุต พื้นฐาน
Input-output กับประเภทข้อมูล
ในบทเรียนนี้ คุณจะได้เรียนเกี่ยวกับการรับค่าและการแสดงผลโดยการใช้ฟังก์ชันของภาษา C โดยปกติในการเขียนโปรแกรม เรามักจะมีการรับค่าและการแสดงผลจากผู้ใช้ ในการรับค่าโดยทั่วไปแล้วจะเป็นการรับค่าจากคีย์บอร์ดและการแสดงผลจะเป็นทางหน้าจอคอมพิวเตอร์
ในภาษา C มีฟังก์ชันให้เราสามารถรับค่าและแสดงผลได้ โดยจะมีรูปแบบในการรับค่าและแสดงผลของข้อมูลขึ้นกับประเภทของข้อมูล นี่เป็นข้อมูลส่วนมากที่เราจะพบในการทำงาน โดยจะเป็น specifier ที่จะใช้ในการรับข้อมูลแต่ละแบบ
| specifier | Description | Usage |
|---|---|---|
| d | Integer | ใช้กับตัวเลขจำนวนเต็ม |
| f | Floating, double | ใช้กับตัวเลขจำนวนจริง |
| c | Character | ใช้กับตัวอักษรหนึ่งตัวอักษร |
| s | String of characters | ใช้กับสตริงหรือตัวอักษรหลายตัว |
| p | Pointer | ใช้กับค่าที่อยู่ของหน่วยความจำ |
| % | % | เครื่องหมายที่จะตามโดย specifier ตัวอื่นๆ |
ฟังก์ชัน printf
ในการแสดงผลในภาษา C ฟังก์ชันที่ใช้คือฟังก์ชัน printf ซึ่งเป็นฟังก์ชันที่สามารถแสดงข้อมูลประเภทต่างออกทางหน้าจอภาพได้ โดยมันมีรูปแบบการใช้งานดังนี้
printf("string pattern", value1, value2, ...);
ในการใช้ฟังก์ชัน อาร์กิวเมนต์ตัวแรกคือรูปแบบการแสดงผล และอาร์กิวเมนต์ตัวต่อไปเป็นข้อมูลที่ตรงกับ specifier ที่เรากำหนดไว้ตามลำดับ มาดูตัวอย่างการใช้งานจริง
printf("Hello, my name is Mateo\n");
int age = 20;
printf("I\'m %d year old\n", age);
printf("I have %f USD and %d cents\n", 10.5, 4);
จากตัวอย่างเป็นการใช้ฟังก์ชัน printf เพื่อการแสดงผลแบบต่างๆ อันแรกเป็นการแสดงผลข้อความโดยที่ไม่มี specifier อันที่สองเราต้องการแสดงอายุที่เป็น Integer เราจึงใช้ %d เพื่อแทนการแสดงผลของมัน อันสุดท้ายแสดงให้เห็นถึงการแสดงหลาย ค่าโดยเราต้องกำหนด specifier ให้ตรงกับค่าของเรา
และนี่เป็นตัวอย่างผลลัพธ์ของโปรแกรม
Hello, my name is Mateo
I'm 20 years old
I have 4.5 USD and 4 cents
ฟังก์ชัน scanf
ในการรับค่านั้นเราจะใช้ฟังก์ชัน scanf ในการรับค่า โดยการรับค่าเรามักจะหมายถึงการรับค่าจากคีย์บอร์ด โดยรูปแบบการใช้งานของฟังก์ชันเป็นดังนี้
scanf("%specifier1 %specifier2 ...", variable1, variable2, ...);
ฟังก์ชัน scanf นั้นมีรูปแบบที่คล้ายกันกับฟังก์ชัน printf โดยอาร์กิวเมนต์ในฟังก์ตัวแรกเป็นสตริงของ specifier input ที่เราต้องการรับ และเป็นลำดับของตัวแปรที่ตรงกับ specifier ที่เราได้กำหนดไว้ในอาร์กิวเมนต์ตัวแรก และใส่ตัวแปรให้ตรงกับลำดับของ specifier ที่กำหนด
ต่อไปมาดูตัวอย่าง ของการรับค่าโดยการใช้ฟังก์ชัน scanf
int a;
float b;
scanf("%d%f", &a, &b);
printf("value of a is %d\n", a);
printf("value of b is %f\n", b);
ในตัวอย่าง เราได้มีตัวแปรสองตัวคือ a และ b และมีประเภทของตัวแปรเป็น integer และ floating ตามลำดับ ดังนั้นใน specifier input เราจึงใส่ %d สำหรับตัวแปร a และ %f สำหรับตัวแปร b อาร์กิวเมนต์ตัวต่อไปเราจะใส่ลำดับของตัวแปร โดยลำดับของตัวแปรจะแตกต่างจากฟังก์ชัน printf โดยจะนำหน้าด้วยเครื่องหมาย & ซึ่งมันหมายถึงที่อยู่ของตัวแปร ถ้าในกรณีที่ตัวแปรเป็นอาเรย์ของตัวอักษรนั้นเราไม่ต้องใส่
และนี่เป็นตัวอย่างของโปรแกรมเมื่อใส่ค่าเป็น 5 และ 10.5 ตามลำดับ
5 10.5
value of a is 5
value of b is 10.500000
Escape characters
Escape characters เป็นตัวอักษรพิเศษในภาษา C ที่จะต้องใช้สัญลักษณ์เครื่องหมาย \ นำหน้าเสมอ เพื่อไม่ให้เกิดข้อผิดพลาดในการคอมไพล์โปรแกรม เพราะว่าตัวอักษรนี้เป็นสัญลักษณ์ที่ตรงกันกับโครงสร้างของภาษา นี่เป็นรายการของตัวอักษรพิเศษในภาษา C
| Escape character | Character represented |
|---|---|
| \a | Alarm |
| \b | Backspace |
| \n | Newline |
| \r | Carriage Return |
| \t | Horizontal Tab |
| \v | Vertical Tab |
| \\ | Backslash |
| \' | Single quotation mark |
| \" | Double quotation mark |
| \? | Question mark |
ต่อไปมาดูตัวอย่างการใช้งานของ Escape characters ในภาษา C ซึ่งเราจะเก็บข้อความที่มีตัวอักษรเหล่านี้ไว้ภายในตัวแปร char และตัวแปร char array
#include <stdio.h>
int main ()
{
char tab = '\t';
char a = 'A';
char text[] = "His name is \"Mateo\".\n";
char text2[] =
"You can visit Mateo's website by asking him for address.\n";
printf("%c%c\n", tab, a);
printf("%s", text);
printf("%s", text2);
return 0;
}
ในตัวอย่าง เป็นการใช้งาน Escape characters ในการเขียนโปรแกรม ในสองตัวแปรแรก tab และ a นั้นเป็นตัวแปรแบบ char ตัวแปรแรกเป็นตัวแปรที่เป็นตัวอักษรพิเศษซึ่งหมายถึง tab และตัวแปรที่สองเป็นค่าปกติของ char ที่ไม่ใช่ตัวอักษรพิเศษ
ต่อมาในตัวแปร text และ text2 เป็นตัวแปรแบบ char array หรือตัวแปรที่เก็บข้อมูลของ char ได้มากกว่า 1 ตัวอักษร สำหรับการกำหนดค่าให้กับตัวแปรเราจึงใช้ \" สำหรับเครื่องหมาย " และ \' สำหรับเครื่องหมาย ' ส่วน \n นั้นเป็นตัวอักษรพิเศษที่หมายถึงการขึ้นบรรทัดใหม่ซึ่งเราจะใช้บ่อยในบทเรียนนี้
A
His name is "Mateo".
You can visit Mateo's website by asking him for address.
นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งาน Escape characters ในภาษา C
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการรับค่าและการแสดงผลในภาษา C เบื้องต้น เพื่อให้สามารถสร้างโปรแกรมที่มีการติดต่อกับผู้ใช้ได้ อย่างไรก็ตาม Input-output นั้นสามารถเป็นได้ในทางอื่นๆ เช่น การรับค่าจากเสียง กล้องถ่ายรูป หรืออาจจะเป็นการทำงานกับไฟล์ หรือแม้กระทั่งกับ Network สำหรับบทนี้ เราพูดถึงการรับค่าทางคีย์บอร์ดและการแสดงผลทางหน้าจอ Console