字符串

/*
字符串的操作
*/
#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值