Giào trình Lập trình C - Chương 4: Xâu ký tự - String
Xâu ký tự
Lưu trữ xâu ký tự
Khởi tạo và in nội dung xâu
Nhập xâu từ bàn phím
Một số ví dụ
Một số hàm trong thư viện ctype.h và string.h
4. Xâu ký tự – string
Nội dung
Xâu ký tự
Lưu trữ xâu ký tự
Khởi tạo và in nội dung xâu
Nhập xâu từ bàn phím
Một số ví dụ
Một số hàm trong thư viện ctype.h và string.h
4 Xâu ký tự – string
printf ("Programming in C is fun.\n");
"Programming in C is fun.\n"
Xâu ký tự:
là một dãy các ký tự,
Các ký tự có thể là chữ cái, chữ số hoặc cả các ký tự đặc
biệt
Xâu ký tự được đặt trong dấu nháy kép " "
Xâu ký tự không có ký tự nào là xâu rỗng (viết là "")
4 Xâu ký tự – string
Mảng ký tự
char word [] = { 'H', 'e', 'l', 'l', 'o', '!' };
Để in ra xâu ta in lần lượt từng ký tự
for ( i = 0; i < 6; ++i )
printf ("%c", word[i]);
Nhược điểm: Phải luôn lưu
thông tin về số lượng lý tự trong
mảng ký tự
Mảng word trong bộ nhớ
4 Xâu ký tự – string
Giải pháp: sử dụng một ký tự đặc biệt (ký tự null) báo
hiệu kết thúc xâu : '\0'
const char word [] = { 'H', 'e', 'l', 'l', 'o', '!', '\0' };
Tìm độ dài của xâu
int count = 0;
while ( str[count] != '\0' )
++count;
4 Xâu ký tự – string
Khởi tạo
char tên_biến[độ_dài]={nội_dung};
Ví dụ
char word[] = { "Hello!" };
char word[] = "Hello!" ;
char word[] = { 'H', 'e', 'l', 'l', 'o', '!', '\0' };
char word[10] = { "Hello!" };
char word[6] = { "Hello World!" }; ???
4 Xâu ký tự – string
In nội dung:
Hàm printf
Hàm printf xác định kết thúc xâu bằng ký tự null
printf ("Programming in C is fun.\n");
In nội dung mảng ký tự kết thúc bằng ký tự null (‘\0’)
printf ("%s\n", word);
Hàm puts
puts(tên_biến);
4 Xâu ký tự – string
#include
int main (void)
{
int i = 0;
char str[30] = "This is a sample";
char word[] = {'H', 'e', 'l', 'l', 'o', '!', '\0'};
printf("Noi dung cac xau\n");
printf("xau str: %s\n", str);
printf("xau word: %s\n", word);
for(i=0; i<4; i++) printf("%c", str[i]);
return 0;
}
4 Xâu ký tự – string
Nhập xâu từ bàn phím
Hàm scanf( )
char string[81];
scanf ("%s", string);
int main (void)
{
char s1[81], s2[81], s3[81];
printf ("Enter text:\n");
scanf ("%s%s%s", s1, s2, s3);
printf ("\ns1 = %s\ns2 = %s\ns3 = %s\n",
s1, s2, s3);
return 0;
}
4 Xâu ký tự – string
Hàm gets
gets(tên_biến);
int main (void)
{
char s1[81], s2[81], s3[81];
printf ("Nhap xau 1:"); gets(s1);
printf ("Nhap xau 2:"); gets(s2);
printf ("Nhap xau 3:"); gets(s3);
printf ("\ns1 = %s\ns2 = %s\ns3 = %s\n",
s1, s2, s3);
return 0;
}
4 Xâu ký tự – string
VD1. Viết chương trình nhập nội dung xâu từ bàn phím bằng cách
nhập lần lượt từng ký tự trong xâu sử dụng hàm getchar()
char character, buffer[81];
int i = 0;
printf("Nhap xau:");
do
{
character = getchar();
buffer[i] = character;
++i;
}
while ( character != '\n' );
buffer[i - 1] = '\0';
printf("Noi dung xau: %s\n",buffer);
4 Xâu ký tự – string
VD2. Ghép nội dung hai xâu s1 và s2 lại với nhau để tạo thành
xâu mới.
int i, j;
// copy noi dung s1 vao result
for ( i = 0; s1[i] != '\0'; ++i )
result[i] = s1[i];
// copy noi dung s2 vao result
for ( j = 0; s2[j] != '\0'; ++j )
result[i + j] = s2[j];
// them ky tu ket thuc vao xau ket qua
result [i + j] = '\0';
4 Xâu ký tự – string
VD3. So sánh hai xâu s1 và s2 có bằng nhau hay không. Hai xâu
bằng nhau là hai xâu có các ký tự tại các vị trí tương ứng giống
nhau.
int areEqual;
while ( s1[i] == s2 [i] &&
s1[i] != '\0' && s2[i] != '\0' )
++i;
if ( s1[i] == '\0' && s2[i] == '\0' )
areEqual = 1;
else
areEqual = 0;
4 Xâu ký tự – string
printf ("\aWARNING!!\n");
printf ("%i\t%i\t%i\n", a, b, c);
printf ("\\t is the horizontal tab
character.\n");
printf ("\"Hello,\" he said.\n");
Ký hiệu Ý nghĩa
\a Audible alert
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Horizontal tab
\v Vertical tab
\\ Backslash
\” Double quote
\’ Single quote
\? Question mark
Một số ký tự đặc biệt
4 Xâu ký tự – string
Một số hàm trong thư viện ctype.h
Hàm Ý nghĩa Ví dụ
isalnum(c) Kiểm tra một ký tự có phải là chữ cái hoặc số hay
không (A-Z, a-z, 0-9)
isalnum (‘a’) TRUE
isalpha(c) Kiểm tra một ký tự có phải là chữ cái hay không (A-
Z, a-z)
isalpha(‘3’) FALSE
isdigit(c) Kiểm tra một ký tự có phải là chữ số hay không (0-
9)
islower(c) Kiểm tra một chữ cái là chữ thường (a-z).
isupper(c) Kiểm tra một chữ cái là chữ hoa (A-Z).
isspace(c) Kiểm tra ký tự có phải là dấu cách trống hay không
isxdigit(c) Kiểm tra ký tự có phải là chữ số trong hệ hexa hay
không (0-9, A-F, a-f).
toupper(c) Chuyển ký tự chữ cái từ thường thành hoa
(nếu không phải chữ cái thì không làm gì cả)
tolower(c) Chuyển ký tự chữ cái từ hoa thành thường
(nếu không phải chữ cái thì không làm gì cả)
4 Xâu ký tự – string
Một số hàm trong thư viện string.h
Hàm Ý nghĩa Ví dụ
strcat Nối hai xâu ký tự lại làm một char *strcat(char *dest,
const char *src);
strncat Nối hai xâu ký tự lại làm một (chỉ nối n ký tự
đầu của xâu nguồn)
char *strncat(char *dest,
const char *src, size_t n);
strlen Trả về độ dài của một xâu ký tự (số ký tự có
trong xâu)
char str[]="Hello!";
printf("%d",strlen(str));
strcmp So sánh hai xâu ký tự, trả về giá trị if(strcmp(str,word)==0)
printf("They are equal!");
strcpy Copy nội dung của xâu thứ hai vào xâu thứ nhất strcpy(str,word);
strchr Tìm kiếm một ký tự trong xâu. Nếu tìm thấy
thì trả về vị trí xuất hiện đầu tiên
if(strchr(string, character))
puts("Character found");
strstr Tìm kiếm một xâu con trong xâu ký tự ban
đầu. Hàm trả về con trỏ tới vị trí tìm được,
nếu không tìm thấy thì trả về NULL
pointer = strstr(string1,
string2);
VD1. Viết chương trình nhập vào một xâu ký tự
bất kỳ từ bàn phím. Đếm và in ra màn hình số
lượng ký tự hoa, ký tự thường và chữ số trong
xâu đó.
VD2. Viết chương trình in ra màn hình nội
dung một xâu ký tự nhưng theo thứ tự ngược.
File đính kèm:
chapter4.String.pdf
Examples.Chapter4.pdf



