อินพุต เอาต์พุต พื้นฐาน

Input-output กับประเภทข้อมูล

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

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

specifierDescriptionUsage
dIntegerใช้กับตัวเลขจำนวนเต็ม
fFloating, doubleใช้กับตัวเลขจำนวนจริง
cCharacterใช้กับตัวอักษรหนึ่งตัวอักษร
sString of charactersใช้กับสตริงหรือตัวอักษรหลายตัว
pPointerใช้กับค่าที่อยู่ของหน่วยความจำ
%%เครื่องหมายที่จะตามโดย 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 characterCharacter represented
\aAlarm
\bBackspace
\nNewline
\rCarriage Return
\tHorizontal Tab
\vVertical 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