วันพุธที่ 9 กรกฎาคม พ.ศ. 2557

3.1 ฟังก์ชันรับข้อมูล (input functions)

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

3.1 ฟังก์ชันรับข้อมูล  (input functions)
            ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา  C  มีฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ด  อยู่หลายฟังก์ชันที่จะกล่าวถึง  ดังนี้คือ ฟังก์ชัน  scanf( ), ฟังก์ชัน  getchar( ), ฟังก์ชัน  getch( ), ฟังก์ชัน  getche( )  และฟังก์ชัน  gets( )  ซึ่งแต่ละฟังก์ชันมีรายละเอียดของการใช้งานดังนี้
            3.1.1 ฟังก์ชัน  scanf( )
                        เป็นฟังก์ชันที่ใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว ้โดยสามารถรับข้อมูลที่เป็นตัวเลขจำนวนเต็ม  ตัวเลขทศนิยม  ตัวอักขระตัวเดียว หรือข้อความก็ได
้            รูปแบบการใช้งานฟังก์ชัน

scanf(control  string, argument  list);

            โดยที่
                        control  string  คือ  รหัสรูปแบบข้อมูล (format code)  โดยจะต้องเขียนอยู่ภายใต้เครื่องหมาย  “……..”  (double  quotation)

                        argument list คือ  ชื่อตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย  &  (ampersand)  นำหน้าชื่อตัวแปร  ยกเว้นตัวแปรชนิด  string  ไม่ต้องมีเครื่องหมาย  &  นำหน้าชื่อ  ถ้ามีตัวแปรมากกว่า  1  ตัวแปร  ให้ใช้เครื่องหมาย  ,  (comma)  คั่นระหว่างตัวแปรแต่ละตัว

ตารางที่  3.1  แสดงรหัสแบบข้อมูล  ที่สามารถใช้ในฟังก์ชัน  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
ที่มา  :  Gottfried, S. Byron, 1990 : 481.
            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  scanf( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  3.1, 3.2  และ  3.3  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  3.1  แสดงโปรแกรมการใช้ฟังก์ชัน  scanf( )  ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม
 
 
/*          scanf1.c             */                                             
#include<stdio.h>                                                       /*  บรรทัดที่  1  */
void main(void)                                                            /*  บรรทัดที่  2  */
{                                                                                   /*  บรรทัดที่  3  */
      int  a;                                                                             /*  บรรทัดที่  4  */
      scanf("%d", &a);                                                           /*  บรรทัดที่  5  */
}                                                                                   /*  บรรทัดที่  6  */
 
 
ผลลัพธ์ที่ได้จากโปรแกรม
            หน้าจอว่าง ๆ  มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด  (ข้อมูลที่ต้องการนั้นเป็นจำนวนเต็ม  เพื่อนำไปเก็บไว้ที่ตัวแปร  a)  ซึ่งผู้ใช้ควรเติมข้อมูลตัวเลขจำนวนเต็มเพื่อให้สัมพันธ์กับชนิดของตัวแปร
คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  3.1  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  1  เป็นคำสั่งเรียกแฟ้มที่ชื่อว่า  stdio.h  ซึ่งภายในจะบรรจุคำสั่งหรือฟังก์ชันที่จำเป็นต้องใช้ในภาษา  C  เช่น  printf( )
บรรทัดที่  2  เป็นฟังก์ชันหลักของโปรแกรม  และบอกให้  C compiler  รู้ว่าฟังก์ชัน 
main( )  ไม่มีการส่งค่าข้อมูลและไม่มีการรับค่าข้อมูลกลับ
บรรทัดที่  3  เป็นการแสดงจุดเริ่มต้นของฟังก์ชัน  main( )
บรรทัดที่  4  เป็นการประกาศตัวแปรชื่อ  a  เป็นชนิดจำนวนเต็ม  หรือ  int
บรรทัดที่  5  ฟังก์ชัน  scanf( )  เพื่อรอรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปร  a  ซึ่งเป็นชนิดจำนวนเต็ม
บรรทัดที่  6  เป็นการแสดงจุดสิ้นสุดของฟังก์ชัน  main( )

โปรแกรมตัวอย่างที่  3.2 แสดง โปรแกรมการใช้ฟังก์ชัน  scanf( )  ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดจำนวนเต็ม  และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
 
 
/*          scanf2.c             */
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
   void main(void)                                                                                 /*  บรรทัดที่  2  */
{                                                                                                          /*  บรรทัดที่  3  */
      int  a;                                                                                    /*  บรรทัดที่  4  */
      scanf("%d", &a);                                                                 /*  บรรทัดที่  5  */
      printf("Your enter is ...%d", a);                                         /*  บรรทัดที่  6  */
}                                                                                                          /*  บรรทัดที่  7  */
 
 




   ผลลัพธ์ที่ได้จากโปรแกรม 

ข้อสังเกต  ในเอกสารเล่มนี้  ผลลัพธ์ที่ได้จากโปรแกรม  ถ้าตัวอักษรที่เป็นสีเข้มคือข้อความที่ให้ผู้ใช้พิมพ์ผ่านคีย์บอร์ด 
คำอธิบายโปรแกรม
            ในโปรแกรมตัวอย่างที่  3.2  โปรแกรมจะรับข้อมูลจากคีย์บอร์ด ที่เป็นชนิดจำนวนเต็มเก็บไว้ในตัวแปร และนำค่าของตัวแปรแสดงผลออกจอภาพ  ด้วยคำสั่งบรรทัดที่  6  คือ  printf(“Your enter is…%d”, a);  สำหรับฟังก์ชัน  printf( )  ผู้ใช้สามารถศึกษารายละเอียดเพิ่มเติมก่อนได้ในหัวข้อ  3.2.1 
โปรแกรมตัวอย่างที่  3.3  แสดง โปรแกรมการใช้ฟังก์ชัน  scanf( )  ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรชนิดตัวอักษร  เลขจำนวนเต็ม  และเลขทศนิยม  และนำค่าของตัวแปรออกแสดงผลที่จอภาพ
 
 
/*          scanf3.c             */
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                                          /*  บรรทัดที่  2  */
void main(void)                                                                                 /*  บรรทัดที่  3  */
{    char name[50];                                                                         /*  บรรทัดที่  4  */
      int  age;                                                                               /*  บรรทัดที่  5  */
      float weight, height;                                                          /*  บรรทัดที่  6  */
      clrscr( );                                                                               /*  บรรทัดที่  7  */
      printf("Enter your Name and Age: ");                              /*  บรรทัดที่  8  */
      scanf("%s %d", name, &age);                                         /*  บรรทัดที่  9  */
      printf("Enter your Weight and Height : ");                      /*  บรรทัดที่  10 */
      scanf("%f %f", &weight, &height);                                   /*  บรรทัดที่  10 */
      printf("\nYour name is ...%s.\n",name);                          /*  บรรทัดที่  11 */
      printf("You  are %d years old.\n",age);                          /*  บรรทัดที่  13 */
      printf("Your weight is ...%f cm.\n",weight);                    /*  บรรทัดที่  14 */
      printf("Your height is ...%f cm.\n",height);                     /*  บรรทัดที่  15 */
}                                                                                           /*  บรรทัดที่  16 */
 
 
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Enter your Name and Age: KANNIKAR  25  Enter your Weight and Height : 155.5  45.5  Your name is ...KANNIKAR.  You  are 25 years old.  Your weight is ...155.500000 cm.  Your height is ...45.500000 cm.
คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  3.3  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังต่อไปนี้

บรรทัดที่  เป็นการชุดชนิด  char  ซึ่งจองไว้  50  ตัวอักษร  (เรื่องตัวแปรชุดได้อธิบายรายละเอียดไว้ในบทที่  5)
บรรทัดที่  7  ฟังก์ชัน  clrscr( )  ใช้ลบข้อความใด ๆ  ออกจากจอภาพ  ซึ่งจะเรียกใช้งานควบคู่กับแฟ้มที่ชื่อ  conio.h  ดังนั้นก่อนฟังก์ชัน  main( )  จึงต้องเรียกใช้  #include <conio.h>  ก่อน  (บรรทัดที่  2)
บรรทัดที่  8  จะแสดงข้อความและรอรับค่า  Name  และ  Age  จากผู้ใช้  ดังนั้นเวลาเติมข้อมูลให้เว้นช่องว่างอย่างน้อย  1  ช่อง  เพื่อแยกข้อมูล  Name  กับ  Age 
บรรทัดที่  9  จะรับข้อมูลจากคีย์บอร์ด  2  ค่า  มาเก็บไว้ในตัวแปร  name  เป็นข้อความ  และเก็บในตัวแปร  age  เป็นตัวเลขจำนวนเต็ม
บรรทัดที่  10  จะทำงานคล้ายกับบรรทัดที่  8  แต่จะรับข้อมูลที่เป็นตัวเลขทศนิยม
บรรทัดที่  11 – 15  จะนำข้อมูลที่เก็บไว้ในตัวแปรต่าง ๆ  ออกมาแสดงผลที่จอภาพตามรหัสรูปแบบข้อมูลต่าง ๆ
            3.1.2 ฟังก์ชัน  getchar( )

                        เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง  1  ตัวอักขระ  โดยการรับข้อมูลของฟังก์ชันนี้จะต้องกดแป้น  enter  ทุกครั้งที่ป้อนข้อมูลเสร็จ  จึงทำให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย  ถ้าต้องการนำข้อมูลที่ป้อนผ่านทางคีย์บอร์ดไปใช้งาน  จะต้องกำหนดตัวแปรชนิด  single  character  (char)  ขึ้นมา  1  ตัว  เพื่อเก็บค่าข้อมูลที่รับผ่านทางคีย์บอร์ด  ในทางตรงกันข้ามถ้าไม่ต้องการใช้ข้อมูลที่ป้อนผ่านทางคีย์บอร์ดก็ไม่ต้อง กำหนดตัวแปรชนิด  char  ขึ้นมา           
                       รูปแบบการใช้งานฟังก์ชัน

getchar( );
หรือ         char_var = getchar( );
     
            โดยที่

getchar( )  คือ  ฟังก์ชันที่ใช้รับข้อมูลเพียง  1  ตัวอักขระจากคีย์บอร์ด  โดยฟังก์ชันนี้จะไม่มี  argument ซึ่งอาจจะใช้ getchar(void) แทนคำว่า getchar( ) ก็ได้ แต่นิยมใช้ getchar( ) มากกว่า 
char_var  คือ  ตัวแปรชนิด  char  ซึ่งจะเก็บข้อมูล  1  ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด

            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  getchar( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  3.4  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  3.4  แสดงโปรแกรมการใช้ฟังก์ชัน  getchar( )
 
 
/*          getchar1.c          */
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                                          /*  บรรทัดที่  2  */
void main(void)                                                                                 /*  บรรทัดที่  3  */
{                                                                                                           /*  บรรทัดที่  4  */
      char  cha;                                                                              /*  บรรทัดที่  5  */
      clrscr( );                                                                                 /*  บรรทัดที่  6  */
      printf("Enter a single character : ");                                  /*  บรรทัดที่  7  */
      cha = getchar( );                                                                 /*  บรรทัดที่  8  */
      printf("You type a character is ...%c \n",cha); /*  บรรทัดที่  9  */
}                                                                                                           /*  บรรทัดที่  10 */
 
 
ผลลัพธ์ที่ได้จากโปรแกรม
 
แผนผังลำดับงาน: จอภาพ: Enter a single character : k  You type a character is ...k
คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  3.4  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังต่อไปนี้

บรรทัดที่  1  เรียกใช้แฟ้มที่ชื่อ  stdio.h  ซึ่งในโปรแกรมนี้จะใช้คู่กับฟังก์ชัน  printf( )  ในบรรทัดที่  7  และ  9 
บรรทัดที่  2  เรียกใช้แฟ้มที่ชื่อ  conio.h  ซึ่งใช้คู่กับฟังก์ชัน  clrscr( )  เพื่อลบข้อมูลที่จอภาพในบรรทัดที่  6 
บรรทัดที่  5  ประกาศตัวแปรชื่อ  cha  เป็นชนิดตัวอักขระ  หรือ  char
บรรทัดที่  8  รับข้อมูล 1 ตัวอักขระจากคีย์บอร์ด  แล้วนำค่าที่รับมาเก็บไว้ในตัวแปร  cha
บรรทัดที่  9  นำข้อมูลที่เก็บในตัวแปร  cha  มาแสดงตรงตำแหน่ง  %c  และขึ้นบรรทัดใหม่  (\n  คือ  new  line)
            3.1.3 ฟังก์ชัน  getch( )

                        เป็นฟังก์ชันที่ใช้รับข้อมูลเพียง  1 ตัวอักขระเหมือนกับฟังก์ชัน getchar( )  แตกต่างกันตรงที่เมื่อใช้ฟังก์ชันนี้รับข้อมูล  ข้อมูลที่ป้อนเข้าไปจะไม่ปรากฏให้เห็นบนจอภาพและไม่ต้องกดแป้น  enter  ตาม 
            รูปแบบการใช้งานฟังก์ชัน

getch( );
หรือ         char_var = getch( );
     
            โดยที่

getch( )  คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง  1  ตัวอักขระจากคีย์บอร์ด  โดยฟังก์ชันนี้จะไม่มี  argument  ดังนั้นอาจจะใช้  getch(void)  แทนคำว่า  getch( )  ก็ได้  แต่นิยมใช้  getch( )  มากกว่า
char_var  คือ  ตัวแปรชนิด  char  ซึ่งจะเก็บข้อมูล  1  ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด
            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  getch( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  3.5  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  3.5  แสดงโปรแกรมการใช้ฟังก์ชัน  getch( ) 
 
 
/*          getch1.c            */
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                                          /*  บรรทัดที่  2  */
void main(void)                                                                                 /*  บรรทัดที่  3  */
{                                                                                                           /*  บรรทัดที่  4  */
      char  ch;                                                                                /*  บรรทัดที่  5  */
      clrscr( );                                                                                 /*  บรรทัดที่  6  */
      printf("Enter a single character : ");                                  /*  บรรทัดที่  7  */
      ch = getch( );                                                                       /*  บรรทัดที่  8  */
      printf("\nYou type a character is ...%c \n",ch);                /*  บรรทัดที่  9  */
      getch( );                                                                                 /*  บรรทัดที่  10 */
}
 
 

ผลลัพธ์ที่ได้จากโปรแกรม

 
คำอธิบายโปรแกรม
            การทำงานของโปรแกรมตัวอย่างที่  3.5  จะคล้ายกับโปรแกรมตัวอย่างที่  3.4  ต่างกันตรงคำสั่งบรรทัดที่  8  จะเป็นการใช้ฟังก์ชัน   getch( )  คือ  ch = getch( );  ให้นำค่าที่รับมาเก็บไว้ในตัวแปร  ch  ซึ่งเวลาเรารับข้อมูลจากคีย์บอร์ดจะไม่ปรากฎข้อมูลที่เราป้อนเข้าไปให้เห็น บนจอภาพ  และไม่ต้องกด  enter  ตาม  โปรแกรมก็จะไปทำงานคำสั่งบรรทัดที่  9  คือ  นำข้อมูลที่เก็บในตัวแปร  ch  มาแสดงตรงตำแหน่ง  %c  และขึ้นบรรทัดใหม่  ส่วนคำสั่งบรรทัดที่  10  ฟังก์ชัน  getche( );  โปรแกรมก็จะหยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  เช่น  เรากด  enter  ก็จะกลับเข้าสู่โปรแกรม
            3.1.4 ฟังก์ชัน  getche( )

                        เป็นฟังก์ชันที่ใช้รับข้อมูลจากคีย์บอร์ดเพียง  1 ตัวอักขระ เหมือนฟังก์ชัน getch( )  แตกต่างกันตรงที่ข้อมูลที่ป้อนเข้าไป จะปรากฏให้เห็นบนจอภาพด้วย  นอกนั้นมีการทำงาน และลักษณะการใช้งานเหมือนฟังก์ชัน  getch( )  ทุกประการ
รูปแบบการใช้งานฟังก์ชัน

getche( );
หรือ         char_var = getche( );
     
            โดยที่

getche( )  คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง  1  ตัวอักขระจากคีย์บอร์ด  โดยฟังก์ชันนี้จะไม่มี  argument  ดังนั้นอาจจะใช้  getche(void)  แทนคำว่า  getche( )  ก็ได้  แต่นิยมใช้  getche( )  มากกว่า
char_var  คือ  ตัวแปรชนิด  char  ซึ่งจะเก็บข้อมูล  1  ตัวอักขระที่ป้อนผ่านทางคีย์บอร์ด

            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  getche( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  3.6  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  3.6  แสดงโปรแกรมการใช้ฟังก์ชัน  getche( ) 
 
 
/*          getche1.c           */
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                                          /*  บรรทัดที่  2  */
void main(void)                                                                                 /*  บรรทัดที่  3  */
{                                                                                                           /*  บรรทัดที่  4  */
      char  e;                                                                                  /*  บรรทัดที่  5  */
      clrscr( );                                                                                 /*  บรรทัดที่  6  */
      printf("Enter a single character : ");                                  /*  บรรทัดที่  7  */
      e = getche( );                                                                       /*  บรรทัดที่  8  */
      printf("\nYou type a character is ...%c \n",e);                  /*  บรรทัดที่  9  */
      getch( );                                                                                 /*  บรรทัดที่  10 */
}                                                                                                           /*  บรรทัดที่  11 */
 
 

ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Enter a single character : r  You type a character is ...r   

คำอธิบายโปรแกรม
            การทำงานของโปรแกรมตัวอย่างที่  3.6  จะคล้ายกับโปรแกรมตัวอย่างที่  3.5  ต่างกันตรงคำสั่งบรรทัดที่  8  จะเป็นการใช้งานฟังก์ชัน  getche( )  คือ  e = getche( );  คำสั่งนี้ให้นำค่าที่รับมาเก็บไว้ในตัวแปร  e  ซึ่งข้อมูลที่เติมเข้าไปจะปรากฎให้เห็นบนจอภาพด้วย  แต่ไม่ต้องกด  enter  ตาม  โปรแกรมก็จะไปทำงานคำสั่งบรรทัดที่  9  คือ  นำข้อมูลที่เก็บในตัวแปร  e  มาแสดงตรงตำแหน่ง  %c  และขึ้นบรรทัดใหม่  ส่วนคำสั่งบรรทัดที่  10  getch( );  โปรแกรมก็จะหยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  เช่น  เรากด  enter  ก็จะกลับเข้าสู่โปรแกรม 
            3.1.5 ฟังก์ชัน  gets( )

                        เป็นฟังก์ชันที่ใช้รับข้อมูลชนิดข้อความ  (string)  จากคีย์บอร์ด  จากนั้นนำข้อมูลที่รับเข้าไปเก็บไว้ในตัวแปรสตริง  (string  variables)  ที่กำหนดไว้
รูปแบบการใช้งานฟังก์ชัน

gets(string_var);

    
            โดย

string_var  คือ  ตัวแปรสตริง  ซึ่งจะใช้เก็บข้อมูลชนิดข้อความ  (string  constant)
gets( )       คือ  ฟังก์ชันที่ใช้รับข้อความจากคีย์บอร์ด  แล้วไปเก็บไว้ในตัวแปรสตริง

            เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน  gets( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  3.7  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  3.7  แสดงโปรแกรมการใช้ฟังก์ชัน  gets( )
 
 
/*          gets1.c              /
#include<stdio.h>                                                                           /*  บรรทัดที่  1  */
#include<conio.h>                                                                          /*  บรรทัดที่  2  */
void main(void)                                                                                 /*  บรรทัดที่  3  */
{                                                                                                         /*  บรรทัดที่  4  */
      char pro[50];                                                                        /*  บรรทัดที่  5  */
      clrscr( );                                                                                 /*  บรรทัดที่  6  */
      printf("Enter your province : ");                                           /*  บรรทัดที่  7  */
      gets(pro);                                                                              /*  บรรทัดที่  8  */
      printf("Your province is ...%s\n", pro);                              /*  บรรทัดที่  9  */
      getch( );                                                                                 /*  บรรทัดที่  10 */
}                                                                                                         /*  บรรทัดที่  11 */
 
 




   ผลลัพธ์ที่ได้จากโปรแกรม
แผนผังลำดับงาน: จอภาพ: Enter your province : Nakhonphanom  Your province is …  Nakhonphanom
คำอธิบายโปรแกรม
            โปรแกรมตัวอย่างที่  3.7  เป็นโปรแกรมที่รอรับการเติมชื่อจังหวัด  แล้วนำไปเก็บไว้ในตัวแปร  pro  ด้วยคำสั่งบรรทัดที่  8  คือ  gets(pro);  แล้วนำค่าที่เก็บไว้ในตัวแปร  pro  ออกมาแสดงตรงตำแหน่ง   %s   และขึ้นบรรทัดใหม่   ส่วนคำสั่งบรรทัดที่  10  getch( );  โปรแกรมก็จะหยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  เช่น  เรากด  enter  ก็จะกลับเข้าสู่โปรแกรม   
          สรุปข้อแนะนำการใช้ฟังก์ชันรับข้อมูล  (input  functions)
  • เมื่อต้องการรับค่าข้อมูล  string  ควรใช้ฟังก์ชัน  gets( )  หรือ  scanf( )
  • เมื่อต้องการรับตัวเลขหรือตัวอักษรเพียง  1  ตัว  ที่ไม่ต้องการเห็นบนจอภาพ  และไม่ต้องกดแป้น  enter  ควรใช้ฟังก์ชัน  getch( ) แต่ถ้าต้องการเห็นบนจอภาพด้วยควรใช้ฟังก์ชัน  getche( )
  • เมื่อต้องการรับข้อมูลตัวเลขที่มากกว่า  1  ตัว  เช่น  ตัวเลขจำนวนเต็มหรือตัวเลขทศนิยม  ควรใช้ฟังก์ชัน  scanf( )
  • กรณีที่ใช้ฟังก์ชัน  scanf( )  รับข้อมูลติดต่อกันมากกว่า  2  ครั้ง  อาจเกิดความผิดพลาดในการรับข้อมูล  ดังนั้นจึงควรใช้คำสั่ง  ch = getchar( );  คั่นก่อนที่จะรับข้อมูลครั้งที่  3  โดยจะต้องมีคำสั่งประกาศตัวแปร  char  ch;  ไว้ด้วย

ไม่มีความคิดเห็น:

แสดงความคิดเห็น