อินพุต เอาต์พุต พื้นฐาน
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