ในภาษา C จะมีฟังก์ชันสำหรับการพิมพ์และการรับข้อมูลไว้ให้ใช้มากมาย การพิมพ์ก็คือ การนำข้อมูลไปแสดงที่หน้าจอ และการรับข้อมูลก็คือ การรับข้อมูลจากคีย์บอร์ดเข้ามา ซึ่งในภาษา C นั้นจะมองอุปกรณ์ในเครื่องคอมพิวเตอร์เป็นไฟล์ทั้งหมด ยกตัวอย่างเช่น จอภาพจะเป็น Standard Output File และคีย์บอร์ดจะเป็น Standard Input File ดังรูปที่ 3-1
รูปที่ 3-1 แสดงการพิมพ์และรับข้อมูล
Standard Input File โดยทั่วไปก็คือ Buffered นั่นเอง ซึ่งจะทำหน้าที่ในการเก็บข้อมูลที่ได้รับจากคีย์บอร์ดไปเก็บไว้ โดยเรียงลำดับกันเข้าไป
Standard Output File คือ จอภาพ ซึ่งก็เหมือนกับคีย์บอร์ด ซึ่งจะเป็นเท็กซ์ไฟล์ เมื่อต้องการจะแสดงข้อมูลนั้น จะทำการแปลงข้อมูลเป็นข้อความก่อนแล้วค่อยพิมพ์แสดงออกมา
การพิมพ์ข้อมูล
ฟังก์ชันมาตรฐานที่ใช้ในการพิมพ์ข้อมูลของภาษา C คือ printf ซึ่งมีรูปแบบดังนี้
รูปแบบ
Printf (“[รูปแบบข้อความ]”,[ตัวแปร])
รูปที่ 3 – 2 แสดงคำสั่งในการ Output ข้อมูลออกทางหน้าจอ
ในส่วนรูปแบบข้อความนั้น อาจจะเป็นตัวอักษร ข้อความ หรือเป็นตัวกำหนดชนิดของข้อมูล ซึ่งใช้กำหนดชนิดข้อมูลที่จะพิมพ์ ซึ่งจะต้องอยู่หลังเครื่องหมาย % เสมอ และสามารถใช้ได้ทั้งการ Input และ Output ดังแสดงในตารางที่ 3 -1
ตารางที่ 3 – 1 แสดงตัวกำหนดชนิดข้อมูล
ชนิดข้อมูล |
ขนาด |
รหัส |
ตัวอย่าง |
char |
– |
c |
%c |
short int |
h |
d |
%hd |
float |
– |
f |
%f |
และผู้ใช้สามารถกำหนดความยาวของข้อมูลที่จะแสดงออกมาได้ โดยมีรูปแบบคำสั่งดังนี้
%[ความยาว][ตัวกำหนดข้อมูล]
สามารถดูตัวอย่างได้ในตารางที่ 3- 2
ตารางที่ 3 -2 การแสดงข้อมูลแบบกำหนดและไม่กำหนดความยาว
ค่า | %d | %4d |
12 123 1234 12345 |
12 123 1234 12345 |
12 123 1234 12345 |
ถ้าข้อมูลเป็นตัวเลขชนิด float ก็สามารถทำได้เช่นกัน แต่จะต้องกำหนดตัวเป็นดังนี้
% [ความยาว].[จำนวนเลขหลังจุดทศนิยม][ตัวกำหนดข้อมูล]
เช่น
printf(“%7.2f”,23.35000);
ซึ่งมีความหมายว่า ข้อมูลที่จะแสดงยาวทั้งหมด 5 ตัว โดยแบ่งเป็นจำนวนตัวเลขหน้าจุด ทศนิยม 4 ตัว ทศนิยม 1 ตัว และตัวเลขหลังจุดทศนิยมอีก 2 ตัว ผลลัพธ์ของคำสั่งด้านบนจะเป็นดังนี้
23.35
ตัวอย่างการพิมพ์ข้อมูล
1. printf(“%d%c%f”,23, ‘z’,4.1);
ผลลัพธ์ที่ได้เป็นดังนี้
23z4.100000
ผลลัพธ์ที่ออกมาติดกัน เพราะในรูปข้อความระหว่างตัวกำหนดชนิดข้อมูลแต่ละตัวนั้นไม่ได้เว้นวรรคไว้ จึงแสดงผลออกมาติดกัน
2. printf(“%d %c %f”, 23. ‘z’, 4.1);
ผลลัพธ์ที่ได้เป็นดังนี้
23 z 4.100000
เป็นการพิมพ์ตามตัวอย่างที่ 1 แต่แก้ไขให้มีการเว้นวรรคระหว่างค่าด้วย
3. int num1 = 23;
char zee = ‘z’;
float num2 = 4.1;
printf(“%d %c %f”, num1, zee, num2);
ผลลัพธ์ที่ได้เป็นดังนี้
23 z 4.100000
4. printf(“%d\t%c\t%5.1f”, 23, ‘z’, 14.2);
printf(“%d\t%c\t%5.1f”, 107, ‘A’, 53.6);
printf(“%d\t%c\t%5.1f”, 1754, ‘F’, 122.0);
printf(“%d\t%c\t%5.1f”, 3, ‘P’, 0.1);
ผลลัพธ์ที่ได้เป็นดังนี้
23 z 14.2
107 A 53.6
1754 F 122.0
3 P 0.1
5. printf(“The number is %6d”, 23);
ผลลัพธ์ที่ได้เป็นดังนี้
The number is 23
ในภาษา C นั้นจะมีค่าคงที่ที่เป็นตัวอักษรอยู่ชุดหนึ่ง ที่จะใช้ในการควบคุมการพิมพ์และแสดงเครื่องหมายบางอย่างที่ไม่สามารถพิพม์เครื่องหมายนั้นตรงๆ ลงไปในรูปแบบของข้อความได้ ซึ่งชุดค่าคงที่ของตัวอักษรเหล่านี้ เรียกว่า Back-slash character ดังแสดงในตารางที่ 3-3
ตารางที่ 3-3 แสดง Back-slash character
สัญลักษณ์ |
ความหมาย |
‘’ |
Null Character |
‘\a’ |
Alert |
‘\b’ |
Backspace |
‘\t’ |
Horizontal |
‘\n’ |
Newline |
‘\v’ |
Vertical tab |
‘\f’ |
Form feed |
‘\r’ |
Carriage return |
‘\’ |
Single quote |
‘\”’ |
Double quote |
‘\\’ |
Backslash |
ตัวอย่างการพิมพ์ข้อมูลแบบที่ผิด
1. printf(“%d %d %d\n”, 44, 55);
44 55 0
ในรูปแบบข้อความมีตัวกำหนดชนิดข้อมูล 3 ตัว แต่มีค่าที่ส่งให้เพียง 2 ค่า
2. printf(“%d %d\n”, 44, 55, 66);
44 55
ในรูปแบบข้อความมีตัวกำหนดชนิดข้อมูลเพียง 2 ตัว แต่มีค่าที่ส่งไปให้ 3 ตัว ทำให้พิมพ์ค่าที่ 3 อกมาได้
3. long int x = 444446766;
printf(“%d\n”, x);
-18386
พิมพ์ค่าออกมาไม่ตรงตามค่าที่แท้จริง เนื่องจากใช้ตัวกำหนดชนิดข้อมูลไม่ตรงกับชนิดข้อมูลที่ต้องการจะพิมพ์ จะต้องใช้ตัวกำหนดข้อมูลเป็น %Ld
รูปแบบการรับข้อมูล
ฟังก์ชันมาตรฐานที่ใช้ในการรับข้อมูลของภาษา C คือ scanf ซึ่งมีรูปแบบดังนี้
รูปแบบ
Scanf(“[รูปแบบข้อความ]”,[ที่อยู่ของตัวแปร])
รูปที่ 3-3 แสดงฟังก์ชันในการรับข้อมูลจากคีย์บอร์ด
เมื่อโปรแกรมทำงานมาถึงฟังก์ชันนี้ โปรแกรมจะหยุดรอให้ผู้ใช้ป้อนข้อมูล โดยข้อมูลที่ป้อนลงไปจะไปแสดงบนจอภาพด้วย เมื่อป้อนเสร็จให้กดปุ่ม Enter ข้อมูลก็จะถูกเก็บในตัวแปรตามรูปแบบข้อความ โดยในรูปแบบข้อความนั้นจะต้องมีตัวกำหนดชนิดข้อมูลด้วย ซึ่งตัวกำหนดชนิดข้อมูลจะต้องมีจำนวนเท่ากับตัวแปร มิฉะนั้นจะเกิด Error ขึ้นมาทันที
ตัวอย่างการรับข้อมูล
1. 214 156 14z
scanf(“%d%d%d%c”, &a, &b, &c, %d);
สาเหตุที่ไม่ต้องเว้นวรรคระหว่าง 14 กับ z นั้น เพราะ %c จะไม่ตัดช่องว่าง เพราะช่องว่างก็ถือว่าเป็นตัวอักษรเหมือนกัน เพราะฉะนั้นจะต้องแก้เป็นดังนี้
scanf(“%d%d%d %c”, &a, &b, &c, %d);
2. 2314 15 2.14
scanf(“%d %d %f”, &a, &b, &c);
การรับค่าที่เป็นตัวเลขนั้น เว้นวรรคจะไม่มีผลค่าการรับค่า
3. 14/26 25/66
scanf(“%2d/%2d %2d/%2d”, &num1, &num2, &num3, &num4);
ถ้ามี / ในรูปแบบข้อความ ผู้ใช้ต้องพิมพ์เข้าไปด้วยในระหว่างการรับข้อมูบล
4. 11-25-56
scanf(“%d-%d-%d”,&a, &b, &c);
ตัวอย่างการรับข้อมูลที่ผิด
1. int a = 0;
scanf(“%d”,a);
printf(“%d/n”,a);
234 (Input)
0 (Output)
ตัวอย่างนี้ผิดเพราะในตอนรับค่าไม่มีเครื่องหมาย & หน้า a ทำให้เมื่อรับค่าแล้วไม่รู้จะไปเก็บค่าไว้ที่ไหนทำให้ error
2. float a = 2.1;
scanf(“%5.2f”,&a);
printf(“%5.2f”,a);
ตัวอย่างนี้จะคอมไพล์ผ่านแต่จะรันไม่ได้ เพราะในการรับค่าจะไม่สามารถกำหนดความยาวในการรับแบบจุดทศนิยมได้
3. int a;
Int b;
scanf(“%d%d%d”,&a, &b);
Printf(“%d %d/n”, a, b);
5 10 (Input)
5 10 (Output)
ตัวอย่างนี้ในตอนรับค่ามีตัวกำหนดชนิดข้อมูล 3 ตัว แต่มีที่อยู่ของตัวแปรเพียง 2 ตัว ฟังก์ชั่น scanf จะรับค่าเพียง 2 ค่า และจะออกไปเลย เพราะไม่สามาหาที่อยู่ให้กับค่าที่ 3 ได้
ฟังก์ชันการรับข้อมูลตัวอักษร
การที่จะใช้ฟังก์ชันต่อไปนี้ได้ จะต้องนำเข้าเข้าไลบรารีไฟล์ที่ชื่อ conio.h ด้วย
getch เมื่อทำงานมาถึงฟังก์ชันนี้ โปรแกรมจะหยุดให้ผู้ใช้พิมพ์ข้อมูล 1 ตัวอักษร และเมื่อป้อนเสร็จแล้วไม่ต้องกดปุ่ม Enter และเคอร์เซอร์จะไม่ขึ้นบรรทัดใหม่ และตัวอักษรที่พิมพ์ลงไปจะไม่แสดงออกทางจอภาพด้วย ซึ่งตัวอย่างแสดงได้ดังนี้
ch = getch();
getche ฟังก์ชันนี้จะทำงานเหมือนกับฟังก์ชัน getch แต่จะแสดงตัวอักษรที่พิมพ์เข้าไปออกทางจอภาพด้วย ซึ่งตัวอย่างแสดงดังนี้
ch = getch();
getchar เมื่อทำงานมาถึงฟังก์ชันนี้ โปรแกรมจะหยุดให้ผู้ใช้พิมพ์ข้อมูล 1 ตัวอักษร และเมื่อป้อนเสร็จแล้ว จะต้องกดปุ่ม Enter ด้วย และเคอร์เซอร์ก็จะขึ้นบรรทัดใหม่ ส่วนตัวอักษรที่พิมพ์ลงไปก็จะแสดงออกทางจอภาพด้วย ซึ่งตัวอย่างแสดงดังนี้
ch = getchar(0;
ตัวอย่างโปรแกรม
ในโปรแกรม 3-1 เป็นโปรแกรมง่ายๆ จะแสดง “Nothing”
โปรแกรมที่ 3-1 โปรแกรมที่แสดงคำว่า “Nothing”
ผลลัพธ์ที่ได้
โปรแกรมที่ 3-2 เป็นโปรแกรมที่จะแสดงค่าของตัวอักษรออกมาเป็นตัวเลข โดยจะประกาศตัวแปรตัวอักษรตัวอักษรแล้วกำหนดค่าเริ่มต้นให้กับตัวแปรเหล่านั้น และพิมพ์ค่าเหล่านั้นออกมาเป็นตัวเลข
โปรแกรมที่ 3-2 โปรแกรมค่าของตัวอักษรออกมาเป็นตัวเลข
ผลลัพธ์ที่ได้
โปรแกรมที่ 3-3 เป็นโปรแกรมที่จะแสดงผลลัพธ์ออกมาเหมือนกับรายงาน
ผลลัพธ์ที่ได้
โปรแกรมที่ 3-4 โปรแกรมแสดงการใช้ฟังก์ชันรับข้อมูลตัวอักษร
ผลลัพธ์ที่ได้