顺序结构的串
//顺序结构的串
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define MAXSIZE 100
struct string{
char elem[MAXSIZE];
int length;
};
int sub_string(struct string *s1,struct string *s2)
{
int t=0;
int i,j; //i表示s1下标,j表示s2下标
for(i=0;i<=s1->length-1;i++)
{
for(j=0;j<=s2->length-2;j++) //不匹配结束符
if(s1->elem[i+j]!=s2->elem[j])
break;
if(j==s2->length-1)
break;
}
if(j==s2->length-1)
t=1; //等于说明匹配成功
return t;
}
void cat_string(struct string *s1,struct string *s2)
{
int n1,n2,i;
n1=s1->length-1;
n2=s2->length;
if(n1+n2>MAXSIZE)
printf("\nerror");
else
for(i=0;i<=n2;i++)
s1->elem[n1+i]=s2->elem[i];
s1->length=n1+n2;
}
/*
int i,j;
i=s1->length-1;
for(j=0;j<=s2->length-1;j++)
s1->elem[i+j]=s2->elem[j];
s1->length=s1->length-2+s2->length;
*/
int cmp_string(struct string *s1,struct string *s2)
{
int i,j,t;
for(i=0,j=0;i<=s1->length-1 && j<=s2->length-1;i++,j++)
if(s1->elem[i]!=s2->elem[j]) //比较s1s2是否相等
break;
if(i==s1->length && j==s2->length) //比较长度
t=0;
else
if(s1->elem[i]<s2->elem[j]) //比较大小
t=-1;
else
t=1;
return t;
}
void del_string(struct string *s1,int i,int n) //从第i位开始删除n个字符
{
int j;
for(j=i+n-1;j<=s1->length-1;j++)
s1->elem[j-n]=s1->elem[j];
s1->length=s1->length-n;
}
main()
{
struct string *s1,*s2;
s1=(struct string *)malloc(sizeof(struct string));
s2=(struct string *)malloc(sizeof(struct string));
s1->length=0;
s2->length=0;
printf("\n输入s1:");
scanf("%s",s1->elem); //不需要加【】%s是字符串的格式
s1->length=strlen(s1->elem)+1; //改变length的长度
printf("\n输入s2:");
scanf("%s",s2->elem);
s2->length=strlen(s2->elem)+1;
printf("\n----------------subzc---------------------\n");
printf("\ns1=%s,s2=%s\n",s1->elem,s2->elem);
printf("sunstring=%d\n",sub_string(s1,s2));
printf("\n----------------strcmp--------------------\n");
printf("strcmp=%d\n",cmp_string(s1,s2));
printf("\n----------------strcat--------------------\n");
printf("\ns1=%s,s2=%s\n",s1->elem,s2->elem);
cat_string(s1,s2);
printf("strcar=%s\n",s1); //s1->elem也可以
printf("\n----------------strdsel---------------------\n");
del_string(s1,2,3);
printf("strdels1=%s\n",s1);
}
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634993.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现