Code C\C++: Ví dụ xử lý xâu - string (12-01-13)
/* Vi du Xau 1
1- Nhap vao 1 xau ky tu co do dai <= 100
2- In xau
3- Cho biet do dai xau
4- Dem so lan xuat hien cua ky tu c trong xau (c nhap tu ban phim)
5- Tach xau thanh cac tu
6- Dem so tu trong xau
7-BTVN - Nhap vao mot xau, kiem tra xem xau co nam trong xau ban dau hay khong???
*/
#include<stdio.h>
#include<string.h>
#include<conio.h>
// khai bao
char str[100];
// 1- ham nhap
void Nhap(){
printf("\n Nhap xau: ");
fflush(stdin);
gets(str);
}
// 2-In xau
void InXau(){
// in xuoi
printf("\n In xau: %s",str);
// in nguoc
printf("\n In xau nguoc lai:");
for(int i=strlen(str);i>=0;i--)
printf("%c",str[i]);
}
// 3- Do dai xau
int DoDai(char xau[]){
int l=strlen(xau);
return l;
}
// 4- dem ky tu c trong xau
int Dem(char xau[], char c){
int dem=0;
for(int i=0;i<strlen(xau);i++)
if (xau[i]==c) dem++;
return dem;
}
// 5- Tach tu
void TachTu(char xau[]){
printf("\n Tach xau thanh cac tu:\n");
for(int i=0; i<strlen(xau);i++)
if (xau[i]==' ') printf("\n");
else printf("%c",xau[i]);
}
// 6- dem so tu trong xau
int DemTu(char xau[]){
int dem=0;
for(int i=0;i<strlen(xau);i++)
if (xau[i]==' ') dem++;
return dem+1;
}
// 7- kiem tra xem xau co nam trong xau ban dau hay khong
int XauCon(char xau1[], char xau2[]){
int test=0, n1=strlen(xau1), n2=strlen(xau2); // abcder de;
if(n1<n2)
test=0;
else{
int i=0, viTriBatDau=0;
while (i<n2&&viTriBatDau<n1){
if(xau2[i]==xau1[viTriBatDau]){ i++; viTriBatDau++;}
else {i=0; viTriBatDau++;}
}
if(i==n2) test=1;
else test=0;
}
return test;
}
// Ham main
int main(){
Nhap();
InXau();
printf("\n Do dai xau :%d",DoDai(str));
char c;
printf("\n Nhap ky tu can dem:");
scanf("%c",&c);
printf("\n Dem ky tu trong xau :%d",Dem(str,c));
TachTu(str);
printf("\n Dem so tu trong xau: %d",DemTu(str));
char xau[100];
printf("\n Nhap vao xau con can kiem tra: ");
fflush(stdin);
gets(xau);
if (XauCon(str,xau)==1) printf("\n Xau con ");
else printf("\n Khong phai xau con");
getch();
return 0;
}