串
输入和输出
char str[10];
scanf("%d",str); //不能含有空格
cin>>str;
gets(str); //允许含有空格
printf("there string is %s",str);
cout<<"there string is "<<str;
puts(str);
串的实现
#define maxlen 100
typedef struct
{
char vec[maxlen];
int len;
}str;
int LenStr(str *r)
{
int i = 0;
while(vec[i] !='\0') i++;
return i;
}
void ConcatStr(str *r1,str *r2)
{
if(r1->len + r2->len >maxlen) cout<<"overflow";
else
{
for(i=0;i<r2->len;i++)
r1->vec[r1->len+i] = r2->vec[i];
r1->vec[r1->len+i] = '\0';
r1->len = r1->len + r2->len;
}
}
void SubStr(str* r,str* r1,int i,int j)
{
if(i+j-1 > r->len)
{
cout<<"越界";
return ;
}
else
{
for(k=0;k<j;k++)
r1->vec[k] = r->vec[i-1+k];
r1->len = j;
r1->vec[r1->len] = '\0';
}
cout<<"子串为:"<<r1->vec;
}
int EqualStr(str *r1,str *r2)
{
for(int i=0;r1->vec[i] == r2->vec[i] && r1->vec[i]&&r2->vec[i];i++)
return r1->vec[i] - r2->vec[i];
}
void main()
{
cout<<"input string :"<<endl;
gets(c.vec);
cout<<"input string :"<<endl;
gets(d.vec);
int k = EqualStr(&c,&d);
if(k>0) cout<<"第一个串大";
else if(k<0) cout<<"第二个串大";
else cout<<"两个串一样大";
}
str * InsStr(str *r,str *r1,int i)
{
if(i >= r->len ||r->len+r1-<len >maxlen) cout<<"不能插入"<<endl;
else
{
for(k=r->len-1;k>=i;k--)
r->vec[r1->len+k] = r->vec[k];
for(k=0;k<r1->len;k++)
r->vec[i+k] = r1->vec[k];
r->len = r->len+r1->len;
r->vec[r->len] = '\0';
}
return r;
}
void DelStr(str *r,int i,int j)
{
if(i+j-1 > r->len ) cout<<"越界"<<endl;
else
{
for(k = i+j;k<r->len;k++,i++)
r->vec[i] = r->vec[k];
r->len = r->len -j;
r->vec[r->len] = '\0';
}
}
模式匹配
串子系统
字符串分割处理
cmp
转载请注明原文地址:https://blackberry.8miu.com/read-15855.html