บทที่ 11 การจัดการข้อมูลสตริง C-Programming บทที่ 11 การจัดการข้อมูลสตริง C Programming
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 C-Programming 2004 มีอะไรบ้างในบทนี้ C Programming 11.1 การสร้างและการจัดการกับตัวแปรสตริง 11.2 การรับและแสดงค่าสตริงด้วยฟังก์ชั่น puts() และ gets() 11.3 การกำหนดค่าให้กับตัวแปรสตริงด้วยฟังก์ชั่น sprintf() 11.4 ตัวแปรสตริงแบบ char 11.5 อาเรย์ของสตริง จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
วิธีการสร้างตัวแปรสตริง ตัวแปรสตริง (string) อีกนัยหนึ่งก็คือ ตัวแปรอาเรย์ของข้อมูลชนิด char วิธีการสร้างตัวแปรสตริงทำได้โดยการเขียนโค้ดลักษณะนี้ Char ชื่อตัวแปร[n]; Char name[10]; โดย n คือขนาดของอาเรย์ ต้องมีขนาดมากกว่า 1 ตัวอักษร เช่น ตัวแปร name เก็บข้อความ “Dreamhome” จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
วิธีการกำหนดค่าให้กับตัวแปรสตริง กำหนดค่าตอนประกาศตัวแปร Char name[20]=“Dreamhome”; Printf(“%s”,name); Char name[20]; name=“Dreamhome”; จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
วิธีการกำหนดค่าให้กับตัวแปรสตริง #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char name[20]; strcpy(name, “Dreamhome”); printf(“%s”,name); รูปแบบ strcpy(ตัวแปรสตริงม “ข้อความที่ต้องการ”) จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char str1[20] = “C language”; char str2[20]; strcpy(str2, str1); printf(“string 1 = %s\n”,str1); printf(“string 2 = %s\n”,str2); Getch(); } ผล C language จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
การเพิ่มข้อความสตริง #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char str1[40] = “ ”; char str2[20] = “very easy”; strcat(str1, “C Language”); strcat(str1, “is”); strcat(str1, “str2”); printf(“string = %s\n”,str1); Getch(); } Strcat คือ ฟังก์ชั่นสำหรับการเพิ่มข้อความ รูปแบบ Strcat(ตัวแปรที่จะถูกเพิ่ม, “ข้อความที่ต้องการเพิ่ม”) ผลลัพธ์ String = C Language is very easy จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
การหาความยาวของสตริง #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char buff[40]; int num; strcpy(buff, “what happened?”); num=strlen(buff); printf(“Your string contains %d character”,num); Getch(); } strlen เป็นฟังก์ชั่นสำหรับหาความยาวของ string ผลลัพธ์ Your string contains 14 character จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
การหาความยาวของสตริง (เขียนให้สั้นลง) Int main(){ char buff[40]; strcpy(buff, “what happened?”); printf(“Your string contains %d character”,strlen(buff)); ผลลัพธ์ Your string contains 14 character จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
การหาความยาวของสตริง #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char buff[40]; int count; int num; strcpy(buff, “Johnny English”); num=strlen(buff); for (count=0;count<num;count++) printf(“character is %d is %c\n”, count,buff[count]); Getch(); } Count+1 จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 การเปรียบเทียบสตริง การเปรียบเทียบสตริงจะใช้เครื่องหมาย ==,>=,< แบบการ เปรียบเทียบตัวเลขไม่ได้ จะต้องใช้ฟังก์ชั่น strcmp() (string Compare) ช่วยในการเปรียบเทียบข้อมูลสตริง รูปแบบ Strcmp(ข้อความ1,ข้อความ2); จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char buff1[20]=“AAA”; char buff2[20]=“AAA”; int result; result=strcmp(buff1,buff2); if(result==0) printf(“Equal”); if(result>0) printf(“buff1 > buff2”); if(result<0) printf(“buff1<buff2”); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char name[20]=“”; printf(“Username :”); scanf(“%s”,name); if(strcmp(name, “root”)==0) printf(“Welcome root”); else printf(“Go away!!!”); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char name[20]; printf(“Username : ”); scanf(“%s”,name); if(strcmp(name, “root”)!=0) printf(“Go away”); else printf(“Welcome root”); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
ฟังก์ชั่น puts() และ gets() ซึ่งสามารถใช้แทนฟังก์ชั่น printf() และ scanf() ได้ จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char name[20]=“”; printf(“what is your name?”) gets(name); puts(name); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
กำหนดค่าให้กับตัวแปรสตริงด้วย sprintf() ฟังก์ชั่น sprintf() เป็นเหมือนกับการ เอาฟังกชั่น printf() และฟังก์ชั่น strcpy มารวมกัน จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> #include<string.h> Int main(){ char name[20]=“”; char buff1[40]=“”; int age=25; strcpy(name, “Somsak”); sprintf(buff1, “My name is %s I’m %d years old.”,name,age); put(buff1); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวแปรสตริงแบบ char* ตัวแปรแบบสตริงพอยเตอร์ (string pointer) ข้อดี คือ เราสามารถนำไปใช้งานได้ง่ายขึ้น คือ เราสามารถกำหนดค่าให้กับตัวแปรสตริงทีหลังโดยใช้เครื่องหมาย = ได้ ไม่ต้องใช้ฟังก์ชั่น strcpy() เหมือนในตัวอย่างที่ผ่านมา จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
Username = admin, password = 1234 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> Int main(){ char *user; char *password; user = “admin”; password = “1234”; printf(“username = %s, password = %s”,user,password); Getch(); } รูปแบบการตั้งชื่อตัวแปรจะมี * หน้าตัวแปรเสมอ ผลการรัน Username = admin, password = 1234 จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 อาเรย์ของสตริง Char *name[20]=“NIRUTH”; Char *lastname=“ABC”; Char *phone=“4222432”; Char *address=“BANGKOK”; Char *data[]={“Niruth”, “ABC”, “4222432”, “BANGKOK”}; เป็นการประหยัดตัวแปรดังภาพ จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 ตัวอย่างโปรแกรม #include<stdio.h> #include<conio.h> Int main(){ char *data[]={“Niruth”, “ABC”, “422432”, “BANGKOK”}; printf(“You are %s %s\n”,data[0],data[1]); printf(“Your telephone number is %s\n”,data[2]); printf(“You stay in %s\n”,data[3]); Getch(); } จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 The End Question? จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 แบบฝึกหัด 1. เขียนโปรแกรมรับข้อความจากผู้ใช้มา 1 ข้อความ จากนั้นให้แสดงข้อความนั้นแบบย้อนกลับ ดังตัวอย่าง I love C C love I 2. สร้างตัวแปรสตริงมา 3 ตัว ตั้งชื่อตัวแปรว่าอะไรก็ได้ กำหนดให้ตัวแปรสตริงตัวแรกเก็บข้อความว่า “A Cup of Tea” ให้ใช้ฟังก์ชั่นในการจัดการสตริง ก๊อปปี้ข้อความนี้จากตัวแปรสตริงตัวแรกมายังสตริงตัวที่ 2 และตัวที่ 3 จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555
จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555 แบบฝึกหัด 3.เขียนโปรแกรมรับชื่อและรหัสผ่าน ถ้าชื่อไม่ใช่ admin และรหัสผ่านไม่ใช่ oopser ให้แจ้งข้อความว่า Error แต่ถ้าใช่ ก็ให้แสดงข้อความว่า Welcome Admin 4. เขียนโปรแกรมรับข้อความมา 3 ข้อความ จากนั้นรวมข้อความทั้ง 3 ให้อยู่ในตัวแปรเดียว แล้วแสดงออกทางจอภาพ จันทร์ดารา สุขสาม @Rmuti Surin Campus : 2555