งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)"— ใบสำเนางานนำเสนอ:

1 สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น

2 สายอักขระ (string) คือ array of character หรือชุดของตัวอักขระหลายๆตัวที่มาต่อกัน สิ่งที่ได้อาจเป็นคำ หรือประโยค โดยเมื่อจบชุดของตัวอักขระแล้วจะปิดท้ายด้วย ‘\0’หรือ NULL เสมอ เช่น Hello , cs112_summer ‘H’ ‘e’ ‘l’ ‘o’ ‘\0’ ‘c’ ‘s’ ‘1’ ‘2’ ‘_’ ‘u’ ‘m’ ‘e’ ‘r’ ‘\0’

3 การประกาศตัวแปร string
ใช้การประกาศ array of character การประกาศจะต้องพิจารณาความยาวข้อมูลที่จะนำมาเก็บ หรือต้องมีการกำหนดขนาดของ array +1 สำหรับเก็บ ‘\0’ เช่น ต้องการเก็บคำว่า “Hello” มีความยาว 5 อักขระ char str[6]; ‘H’ ‘e’ ‘l’ ‘o’ ‘\0’

4 การประกาศตัวแปร string (ต่อ)
char str1[]=“cs112_summer”; compiler ของภาษาซี จะจัดการนำ string ใส่ใน arrayให้อัตโนมัติ จะได้ดังนี้ ‘c’ ‘s’ ‘1’ ‘2’ ‘_’ ‘u’ ‘m’ ‘e’ ‘r’ ‘\0’

5 การประกาศตัวแปร string (ต่อ)
char str2[][7]={{“pong”},{”cs112”},{”cmu”}}; หรือ char str3[][7]={“pong”,”cs112”,”cmu”}; ระบุความยาวสูงสุดของข้อมูลสมาชิก ระบุข้อมูลสมาชิกแต่และตัวในอะเรย์

6

7 การรับค่าและแสดงผลของ string
การรับค่าของตัวแปร string จาก standard input ฟังก์ชัน scanf() **ห้ามมี space bar ระหว่างข้อมูลที่ป้อน scanf(“%s”,str); str คือ ตัวแปร string (array of character) ฟังก์ชัน gets() **จะหยุดรับเมื่อกดenter มี space bar ได้ gets(char *s); s คือ ตัวแปร string

8 การรับค่าและแสดงผลของ string (ต่อ)
การแสดงผลค่าของตัวแปร string ออกที่standard output ฟังก์ชัน printf() printf(“%s”,str); str คือ ตัวแปร string หรือ string ที่ต้องการแสดงผล ฟังก์ชัน puts() int puts(char *s); s คือ ตัวแปร string หรือ string ที่ต้องการแสดงผล

9 การประมวลผลสายอักขระ (string manipulation)
สามารถใช้ความรู้เกี่ยวกับเรื่อง control มาจัดการกับ string ได้ นำอักขระพิเศษ ‘\0’ ที่ปิดท้าย string มาใช้ประโยชน์ในการตรวจสอบ เช่น - นับความยาวของ string - เปรียบเทียบ string 2 ชุด - ต่อ string 2 ชุด ให้เป็น 1 ชุด

10 นับความยาวของ string #include <stdio.h> void main( ) {
char name[] = "Hello" ; int count_str(char s[ ]); printf("Length is %d",count_str(name)); } /* end main( ) */ int count_str(char s[ ]) int count=0, i ; while (s[i] != '\0') { count++; i++; } return count;

11 ต่อ string 2 ชุด เข้าด้วยกัน
#include <stdio.h> #include <conio.h> void main() { char *s1 = "ABCDEF"; char *s2 = "XYZ"; void cat_str(char *str1, char *str2); printf ("Before concatenate s1= %s s2= %s \n",s1,s2); cat_str(s1,s2); printf ("After concatenate s1= %s s2= %s \n",s1,s2); } void cat_str(char *str1, char *str2) { int i=0,j=0; while (str1[i] != '\0') { i++; while (str2[j] != '\0') { str1[i] = str2[j]; j++; str1[i] = '\0';

12 ฟังก์ชันในการจัดการกับstring
ในภาษาซี มีการสร้างฟังก์ชันเพื่อนำมาจัดการกับ string โดยผู้ใช้จะต้อง เรียกใช้ไลบารี string.h ฟังก์ชันต่างๆ เกี่ยวกับ string ดังนี้ strcmp(), strcpy(), strlen(), strcat(), strncpy() เป็นต้น

13 ฟังก์ชัน strcmp() ทำหน้าที่เปรียบเทียบ string 2 ชุด Syntax:
int strcmp(char *str1, char *str2); str1, str2 คือ ตัวแปร string ที่นำมาเปรียบเทียบ การเปรียบเทียบ ถ้า str1< str2 ได้ผลลัพธ์น้อยกว่าศูนย์ ถ้า str1 = str2 ได้ผลลัพธ์เท่ากับศูนย์ ถ้า str1 > str2 ได้ผลลัพธ์มากกว่าศูนย์ ผลลัพธ์ที่ได้จะส่งกลับมาในรูปแบบจำนวนเต็ม

14 ตัวอย่าง ผลลัพธ์ buffer2 is greater than buffer1
#include <string.h> #include <stdio.h> int main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\n"); else printf("buffer 2 is less than buffer 1\n"); ptr = strcmp(buf2, buf3); printf("buffer 2 is greater than buffer 3\n"); printf("buffer 2 is less than buffer 3\n"); return 0; } ผลลัพธ์ buffer2 is greater than buffer1 buffer2 is less than buffer3

15 ฟังก์ชัน strcpy() Syntax: char * strcpy(char *dest, char *src);
คัดลอกข้อมูลจาก string หนึ่ง ไปยังอีก string หนึ่ง โดย string ที่เป็นตัวหลักจะต้องมีขนาดที่มากกว่าหรือเท่ากับ string ที่จะนำมาคัดลอก ซึ่งการคัดลอกจะคัดลอกทีละอักขระจนกระทั่งพบอักขระ ‘\0’ จึงจะหยุดคัดลอก และจะไม่คัดลอก ‘\0’ ไปด้วย Syntax: char * strcpy(char *dest, char *src); dest คือ ตัวแปร string หรือ พอยน์เตอร์ชนิดอักขระ ปลายทาง src คือ ตัวแปร string หรือ พอยน์เตอร์ชนิดอักขระ ต้นทาง

16 ตัวอย่าง ผลลัพธ์ abcdefghi #include <stdio.h>
#include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n", string); return 0; } ผลลัพธ์ abcdefghi

17 ฟังก์ชัน strcat() Syntax: char * strcat(char *dest, char *src);
นำ string 2 ชุดมาเชื่อมต่อกัน ผลลัพธ์ที่ได้จะได้ string ที่มีความยาวเท่ากับstring ทั้ง 2 ชุดมารวมกัน Syntax: char * strcat(char *dest, char *src); dest คือ ตัวแปร string หรือ พอยน์เตอร์ชนิดอักขระ ปลายทางที่เก็บผลลัพธ์ จากการเชื่อมต่อ string src คือ ตัวแปร string หรือ พอยน์เตอร์ชนิดอักขระ ต้นทางที่นำ string ไปเชื่อมต่อ

18 ตัวอย่าง ผลลัพธ์ Turbo C++ #include <string.h>
#include <stdio.h> int main(void) { char destination[25]; char *blank = " ", *c = "C++", *turbo = "Turbo"; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination); return 0; } ผลลัพธ์ Turbo C++

19 ฟังก์ชัน strlen() Syntax: int strlen(str);
นับความยาวของ string ที่ต้องการ Syntax: int strlen(str); str คือ ตัวแปร string ที่ต้องการนำมานับความยาวหรือนับจำนวนอักขระของ string โดยการนับนี้จะไม่นับอักขระพิเศษ ‘\0’ และการนับจะสิ้นสุดเมื่อเจอ ‘\0’ ผลลัพธ์ที่ได้จะส่งกลับมาเป็นเลขจำนวนเต็ม

20 ตัวอย่าง ผลลัพธ์ 21 #include <stdio.h> #include <string.h>
int main(void) { char *string = "Borland International"; printf("%d\n", strlen(string)); return 0; } ผลลัพธ์ 21

21 ฟังก์ชัน strncpy() Syntax:
คัดลอก string หนึ่ง ไปยังอีก string หนึ่ง โดยสามารถระบุความยาวมากที่สุดของ string ที่ต้องการคัดลอกไปยังปลายทางได้ Syntax: char * strcnpy(char *dest, char *src, size_t maxlen); dest คือ string ปลายทางที่จะนำ stringที่ต้องการมาคัดลอกลงไป src คือ string ต้นทางที่ต้องการคัดลอก maxlen คือ จำนวนความยาวมากที่สุดของ string ที่ต้องการคัดลอก

22 ตัวอย่าง ผลลัพธ์ abc #include <stdio.h>
#include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strncpy(string, str1, 3); string[3] = '\0'; printf("%s\n", string); return 0; } ผลลัพธ์ abc

23 แบบฝึกหัด จงเขียนโปรแกรมเรียกใช้ฟังก์ชัน catn_str( ) ซึ่งทำหน้าที่ต่อ string 2 ชุดเข้าด้วยกันระบุจำนวนอักขระที่นำไปต่อได้ โดยห้ามใช้ฟังก์ชันสำเร็จรูป จงเขียนโปรแกรมเรียกใช้ฟังก์ชัน cmp_str( ) ซึ่งทำหน้าที่เปรียบเทียบ string 2 โดยห้ามใช้ฟังก์ชันสำเร็จรูป จงเขียนโปรแกรมเรียกใช้ฟังก์ชัน count_word( ) ซึ่งทำหน้าที่นับคำในประโยค(string)


ดาวน์โหลด ppt สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)

งานนำเสนอที่คล้ายกัน


Ads by Google