ยินดีต้อนรับเพื่อนๆ เอกคอมพิวเตอร์ศึกษา และผู้ที่เวะเข้ามาชมทุกคนคับ ที่เข้ามาเยี่ยมชมเว็บบร็อกของผม ยินดีต้อนรับเข้าสู้เว็บไซต์http://teenemerux.blogspot.com

วันจันทร์ที่ 13 กุมภาพันธ์ พ.ศ. 2555

ฟังก์ชันที่ใช้งานเกี่ยวกับสตริง (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 ก็จะกลับสู่โปรแกรม

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

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

มุมแซตมันๆ คับผม