顺序结构的串

//顺序结构的串
#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);
}

 

posted @ 2019-09-29 09:50  JackieDYH  阅读(2)  评论(0编辑  收藏  举报  来源