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