串的顺序存储静态分配
代码如下:
#include<stdio.h>
#include<string.h>
#define Initlen 10
#define Maxlen 100
typedef struct
{
char str[Maxlen];
int len;
} SString;
//typedef struct
//{
// char *str;
// int len;
// int Maxlen;
//} SString1;
void InitString(SString &S)
{
S.len=0;
}
//void InitString(SString1 &S)
//{
// S.str=(char*)malloc(sizeof(char)*Initlen);
// S.len=0;
// S.Maxlen=Maxlen;
//}
void StrAssign(SString &S,char a[])
{
int len1=strlen(a);
for(int i=0,j=0;i<len1;i++)
{
S.str[j++]=a[i];
}
S.len=len1;
}
void PrintString(SString S)
{
for(int i=0;i<S.len;i++)
{
printf("%c",S.str[i]);
}
printf("\n");
// printf("%s\n",S.str);
}
int StrCompare(SString S1,SString S2)
{
for(int i=0,j=0; i<S1.len&&j<S2.len ;i++,j++)
{
if(S1.str[i]>S2.str[j]) return 1;
if(S1.str[i]<S2.str[j]) return -1;
}
if(S1.len>S2.len) return 1;
else if(S1.len<S2.len) return -1;
else return 0;
// return S1.len-S2.len;
}
int StrLength(SString S)//求串厂
{
return S.len;
}
void Concat(SString &T,SString S1,SString S2)
{
int j=0;
for(int i=0;i<S1.len;i++,j++)
{
T.str[j]=S1.str[i];
}
for(int i=0;i<S2.len;i++,j++)
{
T.str[j]=S2.str[i];
}
printf("j===%d\n",j);
printf("S1.len==%d\nS2.len==%d\nS1.len+S2.len===%d\n",S1.len,S2.len,S1.len+S2.len);
T.len=j;
// T.len=S1.len+S2.len;
}
void SubString(SString &Sub,SString S,int index,int len)
{
int j=0;
for(int i=index;i<index+len;i++)
{
Sub.str[j]=S.str[i];
j++;
}
Sub.len=len;
}
int main()
{
SString S1;
SString S2;
SString T;
SString Sub;
char a[100];
char b[100];
while(~scanf("%s",a))
{
scanf("%s",b);
InitString(S1);
InitString(S2);
InitString(T);
InitString(Sub);
StrAssign(S1,a);
// PrintString(S1);
StrAssign(S2,b);
// PrintString(S2);
int len1=StrLength(S1);
printf("len1===%d\n",len1);
int len2=StrLength(S2);
printf("len2===%d\n",len2);
int ans1=StrCompare(S1,S2);
if(ans1>0) printf("S1>S2\n");
else if(ans1==0) printf("S1=S2\n");
else printf("S1<S2\n");
Concat(T,S1,S2);
printf("连接后的字符串是:");
PrintString(T);
SubString(Sub,S1,2,5);
printf("要求的子串是:");
PrintString(Sub);
}
return 0;
}
/*
'0' 48
'A' 65
'a' 97
a
b
abcd
bcde 大
abcd
abcde 大
abcd 大
abbd
cccc 大
aaaab
abcd 大
abcb
*/