วันพุธที่ 17 กันยายน พ.ศ. 2557

06:43
3
5.3 ฟังก์ชันที่ใช้งานเกี่ยวกับสตริง  (string  functions)
            นภาษา  C มีฟังก์ชันที่ใช้จัดการเกี่ยวกับค่าคงที่สตริง และตัวแปรสตริงอยู่หลายฟังก์ชันดังนี้
•  ฟังก์ชัน  strlen( )
•  ฟังก์ชัน   strcmp( )
•  ฟังก์ชัน  strcpy( )
•  ฟังก์ชัน  strcat( )
            โดยก่อนที่จะใช้ฟังก์ชันเหล่านี้จะต้องมีการใช้คำสั่ง  # include<string.h>  เข้ามาในโปรแกรมด้วยจึงจะสามารถทำงานได้
            5.3.1 ฟังก์ชัน  strlen( )
                        strlen( )  เป็นฟังก์ที่ใช้นับความยาวของค่าคงที่สตริง  หรือตัวแปรสตริง
            รูปแบบการใช้ 
             strlen(string  variable);
หรือ
            strlen(“string  constant”);
  
โดยที่  
string  variable  และ  string  constant  คือ  ตัวแปรสตริง  และค่าคงที่สตริง  ตามลำดับ  ใช้อย่างใดอย่างหนึ่งเท่านั้น
เช่น  strlen(“computer”);  หรือ  char  name[20]=  “KANNIKAR” ;  strlen(name);  เป็นต้น
ลักษณะของฟังก์ชัน  strlen( )  นี้เป็นฟังก์ชันที่มีการส่งค่ากลับเป็นตัวเลขจำนวนเต็ม  (integer)  มายังชื่อฟังก์ชัน  ดังนั้นจึงนิยมกำหนดตัวแปรชนิด  int  ขึ้นมา  1  ตัว  เพื่อเก็บค่าความยาวของสตริงเอาไว้
เช่น
int  n;
char  s[80]=  “BANGKOK,  THAILAND” ;
n=strlen(s);  /*  กำหนดค่าความยาวของสตริงส่งกลับให้ตัวแปร  n  */
เพื่อความเข้าใจเกี่ยวกับการทำงานของฟังก์ชัน  strlen( )  ได้ดียิ่งขึ้นควร  ศึกษาโปรแกรมตัวอย่างที่  5.5  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  5.5  

/*             strlen.c     */
#include<stdio.h>                                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                                             /*  บรรทัดที่  2  */
#include<string.h>                                                                             /*  บรรทัดที่  3  */
void main(void)                                                                                    /*  บรรทัดที่  4  */
{                                                                                                           /*  บรรทัดที่  5  */
int  n;                                                                                               /*  บรรทัดที่  6  */
char s[81];                                                                                     /*  บรรทัดที่  7  */
clrscr( );                                                                                          /*  บรรทัดที่  8  */
printf("Enter your string : ");                                                         /*  บรรทัดที่  9  */
gets(s);                                                                                           /*  บรรทัดที่  10  */
n = strlen(s);                                                                                  /*  บรรทัดที่  11  */
printf("\nYour string is %s\n", s);                                 /*  บรรทัดที่  12  */
printf("Length of string is %d", n);                                              /*  บรรทัดที่  13  */
getch();                                                                                           /*  บรรทัดที่  14  */
}                                                                                                           /*  บรรทัดที่  15  */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Enter your string :  Sakon nakhon  Your string is Sakon nakhon  Length of string is  12
คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  5.5  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  3  คำสั่ง  #incluce <string.h>  ในโปรแกรมตัวอย่างนี้  ให้การสนับสนุนฟังก์ชัน  strlen( )  สำหรับหาความยาวของตัวแปรสตริง ในบรรทัดที่ 11
บรรทัดที่  10  คำสั่ง  gets(s);  เป็นการรับข้อมูลสตริงไปเก็บไว้ในตัวแปรสตริง  s  ซึ่งตัวแปรสตริง  s  ได้ประกาศไว้ในบรรทัดที่  7
บรรทัดที่  11  คำสั่ง  n = strlen(s);  เป็นการกำหนดค่าความยาวของสตริง  s  ให้เก็บความยาวไว้ที่ตัวแปร  n
บรรทัดที่  12  ถึง  13  แสดงสตริงและความยาวของสตริงที่หาได้  ออกแสดงที่จอภาพ
บรรทัดที่  14  หยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  ซึ่งถ้าเรากด  enter  ก็จะกลับสู่โปรแกรม
            5.3.2 ฟังก์ชัน  strcmp( )
                        strcmp( )  เป็นฟังก์ชันที่ใช้เปรียบเทียบข้อมูลชนิดสตริง  2  ค่า  ว่ามีค่าเท่ากัน  หรือมากกว่า   หรือน้อยกว่าอย่างใดอย่างหนึ่ง  ซึ่งการเปรียบเทียบสตริงจะใช้ค่ารหัส  ASCII  เปรียบเทียบทีละตัวอักขระ
รูปแบบการใช้ 
          strcmp(str1var,  str2var);
หรือ
          strcmp(str1constant,  str2constant);
  
โดยที่ 

str1var,  str2var  คือตัวแปรสตริงตัวที่  1  และ  2  ตามลำดับ
Str1constant,  str2constant  คือ  ค่าคงที่สตริงค่าที่  1  และ  2  ตามลำดับ

ผลการเปรียบเทียบระหว่าง  str1constant,  และ  str2constant  มีดังนี้ 
ถ้า  str1constant  >  star2constant  จะได้ค่ามากกว่าศูนย์
ถ้า  str1constant  <  star2constant  จะได้ค่าน้อยกว่าศูนย์
ถ้า  str1constant  =  star2constant  จะได้ค่าเท่ากับศูนย์

โดยค่าที่ได้จากการเปรียบเทียบนี้เป็นตัวเลขจำนวนเต็มจะถูกส่งกลับมาเก็บไว้ที่ชื่อฟังก์ชัน  strcmp( )
เพื่อความเข้าใจเกี่ยวกับการทำงานของฟังก์ชัน  strcmp( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  5.6  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  5.6  แสดงการใช้ฟังก์ชัน  strcmp( )  เพื่อเปรียบเทียบข้อมูลชนิดสตริง  2  ค่า  ซึ่งมีค่ามากกว่าหรือน้อยกว่าอย่างใดอย่างหนึ่ง

/*             strcmp.c                */
#include<stdio.h>                                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                                             /*  บรรทัดที่  2  */
#include<string.h>                                                                             /*  บรรทัดที่  3  */
void main(void)                                                                                   /*  บรรทัดที่  4  */
{                                                                                                          /*  บรรทัดที่  5  */
char str1[80], str2[80];                                                                         /*  บรรทัดที่  6  */
      clrscr();                                                                                          /*  บรรทัดที่  7  */
      printf("Enter string1: ");                                                                   /*  บรรทัดที่  8  */
      gets(str1);                                                                                       /*  บรรทัดที่  9  */
      printf("\nEnter string2: ");                                                            /*  บรรทัดที่  10  */
      gets(str2);                                                                                     /*  บรรทัดที่  11  */
if( strcmp(str1, str2) > 0 )                                                                    /*  บรรทัดที่  12  */
      printf("\n%s is greater than %s (ASCII  code)", str1, str2);           /*  บรรทัดที่  13  */
else  if( strcmp(str1,str2) == 0 )                                                            /*  บรรทัดที่  14  */
            printf("\n%s is equal to %s (ASCII  code)", str1, str2);           /*  บรรทัดที่  15  */
      else                                                                                            /*  บรรทัดที่  16  */
            printf("\n%s is less than %s  (ASCII  code)", str1, str2);        /*  บรรทัดที่  17  */
getch();                                                                                              /*  บรรทัดที่  18  */
}                                                                                                        /*  บรรทัดที่  19  */


ผลลัพธ์ที่ได้จากโปรแกรม
แผนผังลำดับงาน: จอภาพ: Enter string1 : Computer  Enter string2 : Science  Computer is less than Science (ASCII code)  Enter string1 : Science  Enter string2 :  Computer  Science is greater than Computer (ASCII  code)  Enter string1 : ris  Enter string2 : ris  ris  is equal to ris (ASCII  code)

คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  5.6  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  3  คำสั่ง  #include <string.h>  ในโปรแกรมตัวอย่างนี้  ให้การสนับสนุนฟังก์ชัน  strcmp( )  สำหรับเปรียบเทียบข้อมูลชนิดสตริง  2  ค่า
บรรทัดที่  12  เป็นการตรวจสอบค่า  str1> str2  หรือไม่  โดยใช้ฟังก์ชัน  strcmp( )  ในบรรทัดที่  12  และ  14  (หรือค่าที่ได้จากฟังก์ชัน  strcmp( )  > 0  หรือไม่)  ซึ่งถ้าใช่ก็ให้พิมพ์ข้อความบอก
บรรทัดที่  14  เป็นการตรวจสอบค่า  str1 == str2  หรือไม่  โดยใช้ฟังก์ชัน  strcmp( ) (หรือค่าที่ได้จากฟังก์ชัน  strcmp( )  == 0  หรือไม่)  ซึ่งถ้าใช่ก็ให้พิมพ์ข้อความบอก
บรรทัดที่  15  และ  17  ถ้าไม่ใช่ทั้ง  2  กรณีที่กล่าวมาแสดงว่าค่าสตริงที่ตรวจสอบนั้น  สตริงตัวแรกมีค่าน้อยกว่าสตริงตัวที่สอง  ก็ให้พิมพ์ข้อความบอก
บรรทัดที่  15  หยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  ซึ่งถ้าเรากด  enter  ก็จะกลับสู่โปรแกรม
ข้อสังเกต  ฟังก์ชัน  strcmp( )  จะเปรียบเทียบสตริงด้วยค่ารหัส  ASCII  โดยเปรียบเทียบทีละตัวอักขระ

            5.3.3 ฟังก์ชัน  strcpy( )
                        strcpy( )  เป็นฟังก์ชันที่ใช้คัดลอกข้อมูลจาก  string  ค่าหนึ่งไปยัง  string  อีกค่าหนึ่ง
รูปแบบที่ใช้
strcpy(str2,  str1);

โดยที่ 
str1  คือ  ค่าคงที่สตริง  หรือค่าตัวแปรสตริงที่ต้องการคัดลอก
str2  คือ  ตัวแปรสตริงที่ใช้เก็บค่าที่คัดลอกมาจาก  str1

เช่น   char  s1[80],  s2[80];
strcpy(s1,”Computer”);
strcpy(s2,s1);  

            เพื่อความเข้าใจเกี่ยวกับการทำงานของฟังก์ชัน  strcpy( )  ได้ดียิ่งขึ้น  ควรศึกษาโปรแกรมตัวอย่างที่  5.7  ดังต่อไปนี้
โปรแกรมตัวอย่างที่  5.7  แสดงการใช้ฟังก์ชัน  strcpy( )  เพื่อคัดลอกข้อมูลจาก  string  ค่าหนึ่งไปยัง  string  อีกค่าหนึ่ง

/*             strcpy.c */
#include<stdio.h>                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                             /*  บรรทัดที่  2  */
#include<string.h>                                                             /*  บรรทัดที่  3  */
void main(void)                                                                    /*  บรรทัดที่  4  */
{                                                                                              /*  บรรทัดที่  5  */
char str1[80], str2[80];                                        /*  บรรทัดที่  6  */
clrscr();                                                                  /*  บรรทัดที่  7  */
strcpy(str1,"Hello, Thailand");                            /*  บรรทัดที่  8  */
strcpy(str2,str1);                                                   /*  บรรทัดที่  9  */
printf("String1 = String2 = %s",str2);                /*  บรรทัดที่  10  */
getch();                                                                  /*  บรรทัดที่  11  */
}                                                                                              /*  บรรทัดที่  12  */

               
  
ผลลัพธ์ที่ได้จากโปรแกรม
แผนผังลำดับงาน: จอภาพ: String1 = String2 = Hello, Thailand 

คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  5.7  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  3  คำสั่ง  #include <string.h>  ในโปรแกรมตัวอย่างนี้  ให้การสนับสนุนฟังก์ชัน  strcpy( )  สำหรับคัดลอกข้อมูลจาก  string  ค่าหนึ่งไป  string  อีกค่าหนึ่ง  ในบรรทัดที่  8  และ  9
บรรทัดที่  8  ฟังก์ชัน  strcpy( )  คัดลอกข้อความคำว่า  Hello, Thailand  ไปเก็บไว้ในตัวแปร  str1
บรรทัดที่  9  ฟังก์ชัน  strcpy( )  คัดลอกข้อความในตัวแปร  str1  ไปเก็บไว้ในตัวแปร
str2
บรรทัดที่  10  แสดงข้อความที่เก็บในตัวแปร  str2  แสดงที่จอภาพ
บรรทัดที่  11  หยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  ซึ่งถ้ากด  enter  ก็จะกลับสู่โปรแกรม
            5.3.4 ฟังก์ชัน  strcat( )
                        strcat( )  เป็นฟังก์ชันที่ใช้เชื่อมค่าคงที่ชนิดสตริง  2  ค่า  เข้าด้วยกัน  โดยผลลัพธ์จะเก็บเอาไว้ในตัวแปรสตริงตัวแรกเสมอ
รูปแบบการใช้ 
strcat(str1,str2);
โดยที่ 
str1  คือ  ตัวแปรสตริงตัวที่  1  ใช้เก็บผลลัพธ์ของการเชื่อมสตริงทั้ง  2  ตัว
str2  คือ  ตัวแปรสตริงตัวที่  2  หรือค่าคงที่สตริงก็ได้
            เพื่อความเข้าใจเกี่ยวกับการทำงานของฟังก์ชัน  strcat( )  ได้ดียิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างที่  5.8  ดังต่อไปนี้ 
โปรแกรมตัวอย่างที่  5.8  แสดงการใช้ฟังก์ชัน  strcat( )  เพื่อเชื่อมค่าคงที่สตริง  2  ค่าเข้าด้วยกัน

/*             strcat.c   */
#include<stdio.h>                                                                              /*  บรรทัดที่  1  */
#include<conio.h>                                                                             /*  บรรทัดที่  2  */
#include<string.h>                                                                             /*  บรรทัดที่  3  */
void main(void)                                                                                    /*  บรรทัดที่  4  */
{                                                                                                            /*  บรรทัดที่  5  */
char str1[80], str2[80];                                                 /*  บรรทัดที่  6  */
clrscr();                                                                                           /*  บรรทัดที่  7  */
strcpy(str1, "Computer Programming Language 1");          /*  บรรทัดที่  8  */
strcpy(str2, " is your course... ");                                 /*  บรรทัดที่  9  */
printf("%s", strcat(str1, str2) );                                                     /*  บรรทัดที่  10  */
getch();                                                                                           /*  บรรทัดที่  11  */
}                                                                                                        /*  บรรทัดที่  12  */
ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Computer Programming Language 1 is your course … 
 คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  5.8  สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ  ได้ดังนี้

บรรทัดที่  3  คำสั่ง  #include <string.h>  ในโปรแกรมตัวอย่างนี้  ให้การสนับสนุนฟังก์ชัน  strcpy( )  และฟังก์ชัน  strcat( )  สำหรับเชื่อมค่าสตริง  2  ค่าเข้าด้วยกัน  ในบรรทัดที่  8, 9  และ  10
บรรทัดที่  8  ฟังก์ชัน  strcpy( )  คัดลอกข้อความคำว่า  Computer  Programming Language 1  ไปเก็บไว้ในตัวแปร  str1
บรรทัดที่  9  ฟังก์ชัน  strcpy( )  คัดลอกข้อความคำว่า  is your course...   ไปเก็บไว้ในตัวแปร   str2
บรรทัดที่  10  ใช้ฟังก์ชัน  strcat( )  เพื่อเชื่อมต่อค่าคงที่ชนิดสตริง  ในตัวแปร  str1  และ  str2  เข้าด้วยกัน  แล้วแสดงผลออกจอภาพ  ด้วยฟังก์ชัน  printf( )
บรรทัดที่  11  หยุดรอรับค่าใด ๆ  จากคีย์บอร์ด  ซึ่งถ้าเรากด  enter  ก็จะกลับสู่โปรแกรม

3 ความคิดเห็น: