Tải bản đầy đủ (.pdf) (36 trang)

Bài giảng Tin học căn bản (Phần 3): Chương 5 - Ngô Văn Linh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (708.61 KB, 36 trang )

tới kí tự ch đầu tiên trong str, ngược lại nó sẽ trả về
con trỏ NULL.
Tương tự như strchr() nhưng việc tìm kiếm bắt đầu từ
cuối xâu str.

char* strstr(char* str1, char* str2);



Tìm kiếm vị trí của xâu con str2 trong xâu str1.
Nếu str2 là xâu con của str1 thì hàm strstr() trả về con
trỏ trỏ tới kí tự đầu tiên của xâu con str2 đầu tiên trong
str1, ngược lại nó sẽ trả về con trỏ NULL.
17


5.3.3. Một số hàm xử lý xâu ký tự khác


char* strcat(char* xâu_đích, char* xâu_nguồn);





char* strncat(char* xâu_đích, char* xâu_nguồn, int n);




Tương tự strcat nhưng chỉ giới hạn với n ký tự đầu tiên của


xâu_nguồn.

char* strlwr(char* xâu)




Ghép nối xâu_nguồn vào ngay sau xâu_đích.
Kết quả trả về của hàm strcat() là xâu mới ghép nối từ 2 xâu
xâu_nguồn và xâu_đích.

Chuyển đổi các chữ in hoa trong xâu sang chữ thường.

char* strupr(char* xâu)


Chuyển đổi các chữ thường trong xâu sang chữ in hoa.

18


5.3.3. Một số hàm xử lý xâu ký tự khác


void strset(char* s, char c)




void strnset(char* s, char c, int n)





Khởi đầu giá trị tất cả các ký tự của xâu s bằng ký tự c

Khởi đầu giá trị cho n ký tự đầu tiên của xâu s bằng ký
tự c

int atoi(char* str)




Chuyển một xâu kí tự là biểu diễn của một số nguyên
thành số nguyên tương ứng.
Nếu chuyển đổi thành công, hàm atoi() trả về giá trị số
nguyên chuyển đổi được, ngược lại trả về giá trị 0.
19


5.3.4. Con trỏ và xâu ký tự






Như đã biết xâu ký tự là một dãy các ký tự đặt
trong hai dấu nháy kép, ví dụ: "Dai Hoc Bach

Khoa".
Cũng giống như mảng, xâu ký tự là một hằng địa
chỉ biểu thị địa chỉ đầu của mảng ký tự chứa xâu
(Mảng này chứa các ký tự của xâu công thêm ký
tự NULL).
Vì vậy, nếu chúng ta khai báo char *pc; là một con
trỏ kiểu char thì phép gán pc="Dai Hoc Bach
Khoa" là hợp lệ. Sau khi thực hiện câu lệnh này,
trong con trỏ pc có địa chỉ đầu của xâu "Dai Hoc
Bach Khoa".
20


5.3.4. Con trỏ và xâu ký tự


Giữa con trỏ kiểu char và mảng kiểu char có sự
khác biệt. Xét ví dụ sau:
char
char
pc =
ch =



ch[20];
*pc;
"Dai Hoc Bach Khoa";/*Hợp lệ*/
"Dai Hoc Bach Khoa";/*Không hợp lệ*/


câu lệnh gán đầu tiên là hợp lệ vì pc là con trỏ
kiểu char, còn câu lệnh gán thứ hai không hợp lệ
vì ch được khai báo là một mảng ký tự, do đó ch là
một hằng, chúng ta không thể gán giá trị cho
hằng được.
21


5.3.4. Con trỏ và xâu ký tự
 Có thể thao tác trên tất cả các ký tự của
xâu thông qua một con trỏ.
#include <stdio.h>
void main()
{
int i;
char *str;
str = "Lap trinh C that thu vi";
for (i = 0; *str != '\0'; i++)
str++;
printf("so cac ky tu = %d\n",i);
}
22


Bài tập







Bài 1: Nhập một xâu kí tự từ bàn phím gồm các
từ, ví dụ "Thu
do Ha Noi". Lập chương trình để
bỏ bớt các dấu trống giữa các từ sao cho các từ
chỉ cách nhau ít nhất một dấu trống.
Bài 2: Viết chương trình nhập vào từ bàn phím họ
và tên của một người, sau đó in phần tên ra màn
hình. Ví dụ: "Tran Hung Dao" thì in ra "Dao".
Bài 3: Nhập vào một câu, kết thúc bằng dấu chấm.
In ra câu đó có bao nhiêu từ.
23


Bài chữa bài 2
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main(){
char s[30], *p;
clrscr();
printf("Nhap vao mot xau ho va ten");
gets(s);
/* Dùng hàm strrchr duyệt ngược từ cuối xâu, tìm vị trí đầu tiên của
một ký tự và trả về con trỏ trỏ đến ký tự đó. */
p = strrchr(s,' '); // Tìm ký tự trống đầu tiên từ cuối xâu s
p = p + 1;
printf("\nPhan ten la: %s\n",p);
getch();
}

24


25


Bài 1
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(int argc, char *argv[])
{
char s[50], t[5]=" ", *p, *q;
int i,j;
printf("Nhap xau: "); fflush(stdin);gets(s);
for(i=0;iq = s;
p = strstr(s,t);

26


i = p - q;
if(ij = i++;
do{
s[j] = s[j+1];
j++;
}while(j}


}

}
printf("\nXau la:%s",s);
getch();
return 0;

27


Bài 2 (another way to solve)
#include <stdio.h>
#include <string.h>
#include <conio.h>

int main(int argc, char *argv[])
{
char s[50], *p, *q;
int i;
printf("Nhap xau: "); fflush(stdin);gets(s);
p=s;

28


}

for(i=1;*p!='\0';i++){
p++;

if(*p==' ')q=p;
}
q++;
printf("\nXau la:%s",q);
getch();
return 0;

29


Bài 3
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(int argc, char *argv[])
{
char s[50]; int i, n=1;
printf("Nhap xau: "); fflush(stdin);gets(s);
if(s[strlen(s)-1] !='.') printf("Nhap sai roi!");
else{ for(i=0;iif(s[i]!=' ' && s[i+1]==' ') n++;
printf("\nSo tu la: %d\n", n);
}
getch()
;
return 0;
}

30



Bài 3:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main(){
char s[100]; int i=0,n=0;
printf("Nhap cau:");gets(s);
while(iwhile(s[i]==' ') i++;
if(i==strlen(s)) break;
while(s[i]!=' ') i++;
n++;
}
printf("\nSo tu la: %d", n);
getch();
}

31


32


33


34



35


36



×