ฟังก์ชันรับข้อมูล (input functions)
ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา C มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด อยู่หลายฟังก์ชันที่จะกล่าวถึง ดังนี้คือ ฟังก์ชัน scanf( ), ฟังก์ชัน getchar( ), ฟังก์ชัน getch( ), ฟังก์ชัน getche( ) และฟังก์ชัน gets( ) ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา C มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด อยู่หลายฟังก์ชันที่จะกล่าวถึง ดังนี้คือ ฟังก์ชัน scanf( ), ฟังก์ชัน getchar( ), ฟังก์ชัน getch( ), ฟังก์ชัน getche( ) และฟังก์ชัน gets( ) ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
scanf( )
เป็นฟังก์ชันที่ใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว ้โดยสามารถรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ตัวอักขระตัวเดียว หรือข้อความก็ได
เป็นฟังก์ชันที่ใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว ้โดยสามารถรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม ตัวเลขทศนิยม ตัวอักขระตัวเดียว หรือข้อความก็ได
รูปแบบการใช้งานฟังก์ชัน
scanf(control string, argument list); |
โดยที่
control string คือ รหัสรูปแบบข้อมูล (format code) โดยจะต้องเขียนอยู่ภายใต้เครื่องหมาย “……..” (double quotation)
argument list คือ ชื่อตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย & (ampersand) นำหน้าชื่อตัวแปร ยกเว้นตัวแปรชนิด string ไม่ต้องมีเครื่องหมาย & นำหน้าชื่อ ถ้ามีตัวแปรมากกว่า 1 ตัวแปร ให้ใช้เครื่องหมาย , (comma) คั่นระหว่างตัวแปรแต่ละตัว
control string คือ รหัสรูปแบบข้อมูล (format code) โดยจะต้องเขียนอยู่ภายใต้เครื่องหมาย “……..” (double quotation)
argument list คือ ชื่อตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย & (ampersand) นำหน้าชื่อตัวแปร ยกเว้นตัวแปรชนิด string ไม่ต้องมีเครื่องหมาย & นำหน้าชื่อ ถ้ามีตัวแปรมากกว่า 1 ตัวแปร ให้ใช้เครื่องหมาย , (comma) คั่นระหว่างตัวแปรแต่ละตัว
ตาราง แสดงรหัสแบบข้อมูล ที่สามารถใช้ในฟังก์ชัน scanf( )
รหัสรูปแบบ (format code) | ความหมาย |
%c | ใช้กับข้อมูลชนิดตัวอักขระตัวเดียว (single character : char) |
%d | ใช้กับข้อมูลชนิดตัวเลขจำนวนเต็ม (integer : int) โดยสามารถใช้กับตัวเลขฐาน 10 เท่านั้น |
%e | ใช้กับข้อมูลชนิดตัวเลขจุดทศนิยม (floating point : float) |
%f, %lf | ใช้กับข้อมูลชนิด float และ double ตามลำดับ |
%g | ใช้กับข้อมูลชนิด float |
%h | ใช้กับข้อมูลชนิด short integer |
%l | ใช้กับข้อมูลชนิด int โดยใช้กับตัวเลขฐาน 8, ฐาน 10 และฐาน 16 |
%o | ใช้กับข้อมูลชนิด int โดยสามารถใช้กับตัวเลขฐาน 8 เท่านั้น |
%u | ใช้กับข้อมูลชนิด unsigned int โดยใช้กับตัวเลขฐาน 10 เท่านั้น |
%x | ใช้กับข้อมูลชนิด int โดยสามารถใช้กับตัวเลขฐาน 16 เท่านั้น |
%s | ใช้กับข้อมูลชนิด string |
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม
/* scanf1.c */ #include<stdio.h> void main(void) { int a; scanf("%d", &a); } | ||
ผลลัพธ์ที่ได้จากโปรแกรม
หน้าจอว่าง ๆ มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด (ข้อมูลที่ต้องการนั้นเป็นจำนวนเต็ม เพื่อนำไปเก็บไว้ที่ตัวแปร a) ซึ่งผู้ใช้ควรเติมข้อมูลตัวเลขจำนวนเต็มเพื่อให้สัมพันธ์กับชนิดของตัวแปร
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
/* scanf2.c */ #include<stdio.h> void main(void) { int a; scanf("%d", &a); printf("Your enter is ...%d", a); } |
ผลลัพธ์ที่ได้จากโปรแกรม
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดตัวอักษร เลขจำนวนเต็ม และเลขทศนิยม และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
/* scanf3.c */ #include<stdio.h> #include<conio.h> void main(void) { char name[50]; int age; float weight, height; clrscr( ); printf("Enter your Name and Age: "); scanf("%s %d", name, &age); printf("Enter your Weight and Height : "); scanf("%f %f", &weight, &height); printf("\nYour name is ...%s.\n",name); printf("You are %d years old.\n",age); printf("Your weight is ...%f cm.\n",weight); printf("Your height is ...%f cm.\n",height); } |
ผลลัพธ์ที่ได้จากโปรแกรม
ฟังก์ชัน getchar( )
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ โดยการรับข้อมูลของฟังก์ชันนี้จะต้องกดแป้น enter ทุกครั้งที่ป้อนข้อมูลเสร็จ จึงทำให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย ถ้าต้องการนำข้อมูลที่ป้อนผ่านทางคีย์บอร์ดไปใช้งาน จะต้องกำหนดตัวแปรชนิด single character (char) ขึ้นมา 1 ตัว เพื่อเก็บค่าข้อมูลที่รับผ่านทางคีย์บอร์ด ในทางตรงกันข้ามถ้าไม่ต้องการใช้ข้อมูลที่ป้อนผ่านทางคีย์บอร์ดก็ไม่ต้องกำหนดตัวแปรชนิด char ขึ้นมา
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ โดยการรับข้อมูลของฟังก์ชันนี้จะต้องกดแป้น enter ทุกครั้งที่ป้อนข้อมูลเสร็จ จึงทำให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย ถ้าต้องการนำข้อมูลที่ป้อนผ่านทางคีย์บอร์ดไปใช้งาน จะต้องกำหนดตัวแปรชนิด single character (char) ขึ้นมา 1 ตัว เพื่อเก็บค่าข้อมูลที่รับผ่านทางคีย์บอร์ด ในทางตรงกันข้ามถ้าไม่ต้องการใช้ข้อมูลที่ป้อนผ่านทางคีย์บอร์ดก็ไม่ต้องกำหนดตัวแปรชนิด char ขึ้นมา
รูปแบบการใช้งานฟังก์ชัน
getchar( ); หรือ char_var = getchar( ); |
โดยที่
getchar( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ซึ่งอาจจะใช้ getchar(void) แทนคำว่า getchar( ) ก็ได้ แต่นิยมใช้ getchar( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน getchar( )
/* getchar1.c */ #include<stdio.h> #include<conio.h> void main(void) { char cha; clrscr( ); printf("Enter a single character : "); cha = getchar( ); printf("You type a character is ...%c \n",cha); } |
ผลลัพธ์ที่ได้จากโปรแกรม
ฟังก์ชัน getch( )
เป็นฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar( ) แตกต่างกันตรงที่เมื่อใช้ฟังก์ชันนี้รับข้อมูล ข้อมูลที่ป้อนเข้าไปจะไม่ปรากฏให้เห็นบนจอภาพและไม่ต้องกดแป้น enter ตาม
เป็นฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar( ) แตกต่างกันตรงที่เมื่อใช้ฟังก์ชันนี้รับข้อมูล ข้อมูลที่ป้อนเข้าไปจะไม่ปรากฏให้เห็นบนจอภาพและไม่ต้องกดแป้น enter ตาม
รูปแบบการใช้งานฟังก์ชัน
getch( ); หรือ char_var = getch( ); |
โดยที่
getch( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ดังนั้นอาจจะใช้ getch(void) แทนคำว่า getch( ) ก็ได้ แต่นิยมใช้ getch( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน getch( )
/* getch1.c */ #include<stdio.h> #include<conio.h> void main(void) { char ch; clrscr( ); printf("Enter a single character : "); ch = getch( ); printf("\nYou type a character is ...%c \n",ch); getch( ); } |
ผลลัพธ์ที่ได้จากโปรแกรม
ฟังก์ชัน getche( )
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ เหมือนฟังก์ชัน getch( ) แตกต่างกันตรงที่ข้อมูลที่ป้อนเข้าไป จะปรากฏให้เห็นบนจอภาพด้วย นอกนั้นมีการทำงาน และลักษณะการใช้งานเหมือนฟังก์ชัน getch( ) ทุกประการ
เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ เหมือนฟังก์ชัน getch( ) แตกต่างกันตรงที่ข้อมูลที่ป้อนเข้าไป จะปรากฏให้เห็นบนจอภาพด้วย นอกนั้นมีการทำงาน และลักษณะการใช้งานเหมือนฟังก์ชัน getch( ) ทุกประการ
รูปแบบการใช้งานฟังก์ชัน
getche( ); หรือ char_var = getche( ); |
โดยที่
getche( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่มี argument ดังนั้นอาจจะใช้ getche(void) แทนคำว่า getche( ) ก็ได้ แต่นิยมใช้ getche( ) มากกว่า
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
char_var คือ ตัวแปรชนิด char ซึ่งจะเก็บข้อมูล 1 ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน getche( )
/* getche1.c */ #include<stdio.h> #include<conio.h> void main(void) { char e; clrscr( ); printf("Enter a single character : "); e = getche( ); printf("\nYou type a character is ...%c \n",e); getch( ); } | ||
ผลลัพธ์ที่ได้จากโปรแกรม
ฟังก์ชัน gets( )
เป็นฟังก์ชันที่ใช้รับข้อมูลชนิดข้อความ (string) จากคีย์บอร์ด จากนั้นนำข้อมูลที่รับเข้าไปเก็บไว้ในตัวแปรสตริง (string variables) ที่กำหนดไว้
เป็นฟังก์ชันที่ใช้รับข้อมูลชนิดข้อความ (string) จากคีย์บอร์ด จากนั้นนำข้อมูลที่รับเข้าไปเก็บไว้ในตัวแปรสตริง (string variables) ที่กำหนดไว้
รูปแบบการใช้งานฟังก์ชัน
gets(string_var); |
โดย
string_var คือ ตัวแปรสตริง ซึ่งจะใช้เก็บข้อมูลชนิดข้อความ (string constant)
gets( ) คือ ฟังก์ชันที่ใช้รับข้อความจากคีย์บอร์ด แล้วไปเก็บไว้ในตัวแปรสตริง
gets( ) คือ ฟังก์ชันที่ใช้รับข้อความจากคีย์บอร์ด แล้วไปเก็บไว้ในตัวแปรสตริง
โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน gets( )
/* gets1.c / #include<stdio.h> #include<conio.h> void main(void) { char pro[50]; clrscr( ); printf("Enter your province : "); gets(pro); printf("Your province is ...%s\n", pro); getch( ); } |
ผลลัพธ์ที่ได้จากโปรแกรม
สรุปข้อแนะนำการใช้ฟังก์ชันรับข้อมูล (input functions)
o เมื่อต้องการรับค่าข้อมูล string ควรใช้ฟังก์ชัน gets( ) หรือ scanf( )
o เมื่อต้องการรับตัวเลขหรือตัวอักษรเพียง 1 ตัว ที่ไม่ต้องการเห็นบนจอภาพ และไม่ต้องกดแป้น enter ควรใช้ฟังก์ชัน getch( ) แต่ถ้าต้องการเห็นบนจอภาพด้วยควรใช้ฟังก์ชัน getche( )
o เมื่อต้องการรับข้อมูลตัวเลขที่มากกว่า 1 ตัว เช่น ตัวเลขจำนวนเต็มหรือตัวเลขทศนิยม ควรใช้ฟังก์ชัน scanf( )
o กรณีที่ใช้ฟังก์ชัน scanf( ) รับข้อมูลติดต่อกันมากกว่า 2 ครั้ง อาจเกิดความผิดพลาดในการรับข้อมูล ดังนั้นจึงควรใช้คำสั่ง ch = getchar( ); คั่นก่อนที่จะรับข้อมูลครั้งที่ 3 โดยจะต้องมีคำสั่งประกาศตัวแปร char ch; ไว้ด้วย