/*
字符串的操作
*/
#include<stdio.h>
#define N 100
//字符串赋值函数
void StrAssign(char a[],char c)
{
int length;
for(length=0;a[length];length++);//length为字符串的长度,指向'\0'的位置
a[length]=c;
a[length+1]='\0';
printf("输出赋值后的字符串:\n");
printf("%s\n",a);
}
//求字符串的长度函数
int StrLength(char a[])
{
int length;
for(length=0;a[length];length++);
return length;
}
//字符串连接函数
void StrCat(char a[],char b[])
{
int length,i;
length=StrLength(a);
for(i=0;b[i];i++){
a[length++]=b[i];
}
a[length]='\0';
}
//
void SubString(char b[],char a[],int start,int length_start)
{
if(!(StrLength(a)>start+length_start-1&&start<StrLength(a))){
printf("数组长度有限不能执行截取操作");
}
else{
int i;
for(i=start;i<start+length_start;i++){
b[i-start]=a[i];
}
b[i-start]='\0';
}
}
//输出字符串的函数
void print(char s[])
{
for(int i=0;s[i];i++){
printf("%c",s[i]);
}
printf("\n");
}
//查找是否存在子串(定位函数)
void StrIndex(char a[],char b[],int start)
{
int i,flag=1;
for(i=start;i<start+StrLength(b)&&flag;i++){
if(a[i]!=b[i-start]){
printf("不存在[%s]在[%s]中从%d开始\n",b,a,start);
flag=0;
}
}
if(flag==1)
printf("存在[%s]在[%s]中从%d开始\n",b,a,start);
}
//插入操作
void StrInsert(char a[],int start,char b[])
{
int length_b;
length_b=StrLength(b);//要把字符串a中从start 开始的元素向后移动length个位置
int length_a;
length_a=StrLength(a);
a[length_a+length_b]='\0';
for(length_a=length_a-1;length_a>start-1;length_a--){
a[length_a+length_b]=a[length_a];
}
for(length_a=0;length_a<length_b;length_a++){
a[length_a+start]=b[length_a];
}
printf("输出插入以后的字符串:");
print(a);
}
//删除子串操作
void StrDelete(char a[],int start,int length_start)
{
if(!(StrLength(a)>start+length_start-1&&start<StrLength(a))){
printf("数组长度有限不能执行删除操作");
}
else{
int i;
for(i=start+length_start;a[i];i++){
a[i-length_start]=a[i];
}
a[i-length_start]='\0';
}
}
int main()
{
char a[N]="123456789";
char b[N];
int length;
char c='b';
int start=3;
int length_start=5;
//字符串的赋值操作StrAssign
StrAssign(a,c);
//求字符串长度的函数
length=StrLength(a);
printf("字符串a的长度是:%d",length+1);/*因为字符串的长度包含'\0',所以给length加上1*/
//连接两个字符串
StrCat(a,"hi");
printf("输出连接后的字符串:\n%s\n",a);
//求子串函数(在字符串a中从start位置a[start]开始找一个字符串长度为length_start,放在字符串b中)
SubString(b,a,start,length_start);
//输出字符串
print(b);
//定位函数,在a中从start开始查找是否存在子串“ddd”
StrIndex(a,"lo World!bhi",start);
//插入子串操作,在a中从start位置开始插入子串"hhh"
StrInsert(a,start,"hhh");
//删除子串操作
StrDelete(a,start,length_start);
printf("输出删除以后的字符串:\n");
print(a);
return 0;
}
字符串
最新推荐文章于 2022-07-07 09:04:18 发布