c-chap11 การจัดการข้อมูลสตริง

Download Report

Transcript c-chap11 การจัดการข้อมูลสตริง

C-Programming
บทที่ 11 การจัดการข้อมูลสตริ ง
C Programming
C-Programming
C Programming
มีอะไรบ้ างในบทนี้
11.1 การสร้ างและการจัดการกับตัวแปรสตริง
 11.2 การรับและแสดงค่ าสตริงด้ วยฟังก์ ชั่น puts() และ gets()
 11.3 การกาหนดค่ าให้ กบ
ั ตัวแปรสตริงด้ วยฟังก์ ชั่น sprintf()
 11.4 ตัวแปรสตริงแบบ char
 11.5 อาเรย์ ของสตริง

2
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
วิธีการสร้างตัวแปรสตริ ง
ตัวแปรสตริ ง (string) อีกนัยหนึ่งก็คือ ตัวแปรอาเรย์ของข้อมูล
ชนิด char วิธีการสร้างตัวแปรสตริ งทาได้โดยการเขียนโค้ด
ลักษณะนี้
Char ชื่อตัวแปร[n];
Char name[10];
โดย n คือขนาดของอาเรย์ ต้องมีขนาดมากกว่า 1 ตัวอักษร
เช่น ตัวแปร name เก็บข้อความ “Dreamhome”

3
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
วิธีการกาหนดค่าให้กบั ตัวแปรสตริ ง

กาหนดค่าตอนประกาศตัวแปร

Char name[20]=“Dreamhome”;
Printf(“%s”,name);

Char name[20];
name=“Dreamhome”;
Printf(“%s”,name);
4
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
วิธีการกาหนดค่าให้กบั ตัวแปรสตริ ง
#include<stdio.h>
#include<conio.h>
#include<string.h>
รู ปแบบ
strcpy(ตัวแปรสตริงม “ข้ อความทีต่ ้ องการ”)
Int main(){
char name[20];
strcpy(name, “Dreamhome”);
printf(“%s”,name);
5
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
ตัวอย่ างโปรแกรม
#include<stdio.h>
ผล
#include<conio.h>
C language
C language
#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();
}
6
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
การเพิม่ ข้ อความสตริง
#include<stdio.h>
Strcat คือ ฟังก์ ชั่นสาหรับการเพิม่ ข้ อความ
#include<conio.h>
รูปแบบ
#include<string.h> Strcat(ตัวแปรทีจ่ ะถูกเพิม
่ , “ข้ อความทีต่ ้ องการเพิม่ ”)
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();
ผลลัพธ์
}
String = C Language is very easy
7
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
การหาความยาวของสตริ ง
#include<stdio.h>
strlen เป็ นฟังก์ ชั่นสาหรับหาความยาวของ string
#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();
}
ผลลัพธ์
Your string contains 14 character
8
จันทร์ดารา สุ ขสาม @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
9
จันทร์ดารา สุ ขสาม @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);
Count+1
for (count=0;count<num;count++)
printf(“character is %d is %c\n”, count,buff[count]);
Getch();
}
10
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
การเปรียบเทียบสตริง
การเปรี ยบเทียบสตริ งจะใช้เครื่ องหมาย ==,>=,< แบบการ
เปรี ยบเทียบตัวเลขไม่ได้ จะต้องใช้ฟังก์ชนั่ strcmp()
(string Compare) ช่วยในการเปรี ยบเทียบข้อมูลสตริ ง
รู ปแบบ
Strcmp(ข้อความ1,ข้อความ2);
11
จันทร์ดารา สุ ขสาม @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
12
}
ตัวอย่ างโปรแกรม
#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();
}
13
จันทร์ดารา สุ ขสาม @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();
}
14
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
ฟังก์ชั่น puts() และ gets()
Puts() ใช้ในการแสดงค่าสตริ ง
 Gets() ใช้ในการรับข้อความจากผูใ้ ช้ แล้วเก็บลงในตัวแปร
สตริ ง
ซึ่งสามารถใช้แทนฟังก์ชน่ั printf() และ scanf() ได้

15
จันทร์ดารา สุ ขสาม @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();
}
16
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
กาหนดค่าให้กบั ตัวแปรสตริ งด้วย sprintf()
ฟังก์ชนั่ sprintf() เป็ นเหมือนกับการ
เอาฟังกชัน่ printf() และฟังก์ชนั่ strcpy มารวมกัน
17
จันทร์ดารา สุ ขสาม @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();
}
18
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
ตัวแปรสตริ งแบบ char*
ตัวแปรแบบสตริ งพอยเตอร์ (string pointer) ข้อดี
คือ เราสามารถนาไปใช้งานได้ง่ายขึ้น คือ เราสามารถกาหนดค่า
ให้กบั ตัวแปรสตริ งทีหลังโดยใช้เครื่ องหมาย = ได้ ไม่ตอ้ งใช้
ฟังก์ชนั่ strcpy() เหมือนในตัวอย่างที่ผา่ นมา
19
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
ตัวอย่ างโปรแกรม
#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
20
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
อาเรย์ของสตริ ง
Char *name[20]=“NIRUTH”;
Char *lastname=“ABC”;
Char *phone=“4222432”;
Char *address=“BANGKOK”;
Char *data[]={“Niruth”, “ABC”, “4222432”, “BANGKOK”};
เป็ นการประหยัดตัวแปรดังภาพ
21
จันทร์ดารา สุ ขสาม @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();
}
22
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
The End
Question?
23
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
แบบฝึ กหัด
1. เขียนโปรแกรมรับข้อความจากผูใ้ ช้มา 1 ข้อความ จากนั้นให้
แสดงข้อความนั้นแบบย้อนกลับ ดังตัวอย่าง
I love C
C love I
2. สร้างตัวแปรสตริ งมา 3 ตัว ตั้งชื่อตัวแปรว่าอะไรก็ได้ กาหนดให้
ตัวแปรสตริ งตัวแรกเก็บข้อความว่า “A Cup of Tea” ให้ใช้
ฟังก์ชนั่ ในการจัดการสตริ ง ก๊อปปี้ ข้อความนี้จากตัวแปรสตริ งตัว
แรกมายังสตริ งตัวที่ 2 และตัวที่ 3
24
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555
แบบฝึ กหัด
3.เขียนโปรแกรมรั บชื่ อและรหัสผ่าน ถ้าชื่ อไม่ใช่ admin และ
รหัสผ่านไม่ใช่ oopser ให้แจ้งข้อความว่า Error แต่ถา้ ใช่ ก็ให้
แสดงข้อความว่า Welcome Admin
4. เขียนโปรแกรมรับข้อความมา 3 ข้อความ จากนั้นรวมข้อความทั้ง
3 ให้อยูใ่ นตัวแปรเดียว แล้วแสดงออกทางจอภาพ
25
จันทร์ดารา สุ ขสาม @Rmuti Surin Campus : 2555