C String - โรงเรียนนวมินท

Download Report

Transcript C String - โรงเรียนนวมินท

C String
Basic of String in C Language
 String ในภาษา C นั้นจะใช้ Array ของ Character มาสร้างเป็ นข้อความ แต่
จะมีอะไรที่แตกต่างจาก Array ของ Character คือจะมี null
Character(\0) เป็ นตัวปิ ดท้ายข้อความ
char string[20]=“Initial Message”;
[0]
[1]
I
n
[4]
i
t
i
[9]
a
l
M
e
s
s
a
g
[14]
[15]
e
\0
 ข้อมูลที่อยูห่ ลัง null character(\0) จะถูกมองข้าม
 ความยาวของข้อความคือ 15 ตัวอักษร
[19]
?
?
?
?
Basic of String in C Language
 String vs. Array of char
String
char color[] = “blue”;
char color[] = {‘b’, ‘l’, ‘u’, ‘e’,‘\0’};
Array of char
char color[] = {‘b’, ‘l’, ‘u’, ‘e’};
Basic of String in C Language

การประกาศตัวแปร String ในรู ปแบบชนิด char*
char
month[] = “January”;
สร้าง array ขนาด 5
char
*monthPtr = “January”;
สร้างตัวแปร pointer ที่ช้ ีไปที่ string
“January” ในหน่วยความจา
กาหนดค่าเริ่ มต้นให้กบั ตัวแปร String
 การกาหนดแบบระบุความยาวตัวอักษรใน String
char msg[10] = “Computer”;
char msg[10] = {‘C’,’o’,’m’,’p’,’u’,’t’,’e’,’r’,’\0’};
 การกาหนดแบบไม่ได้กาหนดความยาวของตัวอักษรใน String
char msg[ ] = “Computer”;
char *msg = “Computer";
char msg[] = {‘C’,’o’,’m’,’p’.’u’,’t’,’e’,’r’,’\0’};
การ Copy String
char str1[10]=“Computer”;
char str2[30];
str2=str1;
str2=“Computer”;
ไม่สามารถกาหนดค่าของตัวแปร String…
...ส่ งแก่ตว
ั แปรตัวอื่นได้
String Input Functions
 scanf
scanf( “%s”, msg );
scanf จะอ่านค่าของสตริ งที่ user ป้ อนให้ไปเรื่ อยๆจนกว่า
จะได้รับค่า space, newline หรื อ
end-of-file character
String Input Functions
 หากค่ าสตริงที่อ่านมามีขนาดตัวอักษรยาวกว่ าขนาดของตัวแปร
array
ทีจ่ ะจัดเก็บ จะเกิดผลอย่ างไร
char msg[10];
printf(“Enter Message : “);
scanf(“%s”, msg);
?
String Input Functions

การป้องกันไม่ ให้ อ่านค่ าตัวอักษรเกินกว่ าขนาดของสตริ งที่กาหนด
ทาได้ โดยการระบุขนาดของตัวอักษรทีจ่ ะรับ
char msg[10];
printf(“Enter Massage : “);
scanf(“%9s”, msg);
String Input Functions

Edit set ( %[…] ) คือ กลุ่มเครื่ องหมายที่ใช้ในการกาหนด
รู ปแบบการอ่าน string โดย scanf จะเลือกอ่านตัวอักษรที่
เหมือนกับตัวอักษรที่อยูใ่ น […] ของ edit set เท่านั้น
char msg[10];
printf(“Enter money : “);
scanf(“%9[1234567890,.$]s”,msg);

ตย. การอ่านค่าเงิน สกุลดอลล่าร์ เท่านั้น
String Input Functions

การกาหนดค่าใน Edit set ( %[…] ) ให้ยกเว้นการอ่านค่า
ตัวอักษรบางตัว ทาได้โดยการ ใส่ เครื่ องหมาย ( ^ ) เช่นตัวอย่าง
กาหนดให้อ่านตัวอักษรทั้งบรรทัด ยกเว้น newline
char msg[100];
printf(“Enter message : “);
scanf(“%81[^\n]s”,msg);

จากตัวอย่าง scanf จะอ่านตัวอักษรจนกว่าจะพบ newline character
จึงหยุดอ่าน
String Output Functions
 printf
printf( “%s”, msg );

รู ปแบบการจัดรู ปแบบการพิมพ์ string
printf( “%flagprecisions”, stringที่จะพิมพ์ );
Left-justify
String Output Functions
printf(“|%+30s|”,”Computer”);
Output:
printf(“|%-30s|”,”Computer”);
Output:
String Output Functions
printf(“|%-20.15s|”,”12345678901234567890”);
Output:
กาหนดระยะพิมพ์ 20 ตาแหน่ง แต่ให้
พิมพ์ 15 ตัวอักษร
Standard Input/Output Library Functions
char *gets (char *s);
#include<stdio.h>
void main()
{
char name[20] = “”;
char question[20] = “What is your name?”;
puts(question);
gets(name);
printf(“You are %s\n”, name);
}
char *gets (char *s);
int puts(const char *s)
String Library Functions
#include
<string.h>
String Length
int strlen( const char string[] );
strlen คืนค่า ขนาดความยาวของสตริง หรื อ
จานวนตัวอักษรในสตริ ง ไม่นบั รวม null character
 ถ้าสตริ งไม่มีตวั อักษรเลย จะคืนค่าศูนย์
String Length
#include<stdio.h>
#include<string.h>
void main()
{
char buff[20] = “”;
int num;
strcpy(buff,“What happen?”);
num = strlen(buff);
printf(“String contains %d character”,num);
}
String Length
#include<stdio.h>
#include<string.h>
void main()
{
char buff[20] = “”;
strcpy(buff,“What happen?”);
printf(“String contains %d character”, strlen(buff));
}
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <string.h>
void main(void)
{
char *message;
int len;
}
ตัวอย่ างคาสั่ง strlen
ผลการทางานโปรแกรม
Enter string : Good Afternoon
String length is 14
clrscr();
message = malloc(sizeof(char)*256);
if(message != NULL)
{
printf("Enter string : ");
gets(message);
len = strlen(message);
printf("String length is %d", len);
getch();
}
else
printf("Out of Memory\n");
free(message);