数据结构串的问题,在输入的指定位置前插入字符串
#include<stdio.h>#define max 8
typedef struct
{
char ch[max];
int last;
}string;
void InintString(string *s,int Max)
{
for(int i=0;i<Max;i++)
s->ch[i]='\0';
s->last=0;
}
void CreateString(string *s,char a[],int n)
{
int i=0;
for(;i<n;i++)
{
s->ch[i]=a[i];
}
s->ch[i+1]='\0';
s->last=n;
printf("你输入的字符串为:\n");
printf("%s",s->ch);
printf("\n");
}
void StrInsert(string *s,char b[],int n,int pos)
{
int i;
if(pos<0||pos>s->last)
{
printf("输入的位置不合理!\n");
return;
}
if(s->last+n-1<=max)
{
for(i=s->last+n-1;i>=n+pos-1;i--) //这没看懂,,,
s->ch[i]=s->ch[i-n];
for(i=0;i<n;i++)
s->ch[i+pos]=b[i];
s->last+=n;
}
else if(pos+n<=max)
{
for(i=max-1;i>n+pos-1;i--) //这没看懂,,
s->ch[i]=s->ch[i-n];
for(i=0;i<n;i++)
s->ch[i+pos]=b[i];
s->last=max;
}
else
{
for(i=0;i<max-pos;i++) //这没看懂,,
s->ch[i+pos]=b[i];
s->last=max;
}
}
int main()
{
string s;
int n=0,pos;
char a[100],b[100];
InintString(&s,max);
printf("请输入字符串:\n");
scanf("%s",a);
for(int i=0;a[i]!='\0';i++)
{
n++;
}
CreateString(&s,a,n);
printf("请输入你要插入的字符串:\n");
scanf("%s",b);
for(int i=0,n=0;b[i]!='\0';i++)
{
n++;
}
printf("请输入你要插入的位置:\n");
scanf("%d",&pos);
StrInsert(&s,b,n,pos);
printf("新的字符串为:\n");
printf("%s\n",s.ch);
return 0;
}
做注释那几行没看懂
然后,形成的新的字符串总少一个元素
求解释。
[此贴子已经被作者于2017-10-17 21:50编辑过]