Description |
实现函数void insert(s,t,pos)将字符串t插入到字符串s中,插入位置为pos。 假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数,字符串的存储结构为定长存储) Input 输入为三项:分别为两个字符串以及要插入的位置 Output输出为插入完成后的字符串 |
Sample Input |
This is a pam! rogr 12 |
Sample Output |
This is a program! |
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#define Max_str 255
using namespace std;
typedef struct{//字符串存储结构
char *ch;
int length;
}Hstring;
void initString(Hstring &S){//初始化
S.ch=new char[Max_str];
S.length=Max_str;
for(int i=0;i<S.length;i++){
S.ch[i]='\0';
}
}
void Strass(Hstring &S,char *chars){//生成字符串T
int i=0;
char *c;
for(i=0,c=chars;*c;i++,c++);
for(int j=0;j<i;j++){
S.ch[j]=chars[j];
}
S.length=i;
}
void Strprint(Hstring S){//输出字符串S
for(int i=0;i<S.length;i++){
cout<<S.ch[i];
}
}
void insert(Hstring &S,Hstring T,int pos){//在第pos个位置插入字符串T
int j=S.length+T.length-1;
for(int i=S.length-1;i>=pos-1;i--){//pos后面的元素先后移T的长度个单位
S.ch[j]=S.ch[i];
j--;
}
int e=0;
for(int k=pos-1;k<T.length+pos-1;k++){//再把T插入
S.ch[k]=T.ch[e];
e++;
}
S.length=S.length+T.length;
}
int main(){
Hstring S,T;
int pos;
char chars[Max_str];
char chars1[Max_str];
initString(S);
initString(T);
gets(chars);//因为需要含义空格所以用gets
Strass(S,chars);//把chars复制给S;
gets(chars1);
Strass(T,chars1);
cin>>pos;
insert(S,T,pos);
Strprint(S);
return 0;
}
注:如果你的代码报RE,请检查你的字符串的定义和引用,
以及生成结构体字符串的函数是否正确。