也許用鏈表比較好實現,下面是用數組實現的程序:
#include<stdio.h>
#include<string.h>
main()
{ int i,j,k,m,n;
char a[100],b[100],c;
gets(a);
gets(b);
c=getchar();
m=strlen(a);
for(i=0;i<m;i++)
{if(a[i]==c)<br/> break;<br/> }
if(i>=m)
{printf("出錯!\n");<br/> return;<br/> }
n=strlen(b);
k=m;
for(j=m+n;j>i;j--,k--)
a[j]=a[k];
for(j=i,k=0;j<n+i;j++,k++)
a[j]=b[k];
printf("%s\n",a);
}
設計過程:
定義兩個字符串s2,s2,字符k
輸入兩個字符串 s1 、 s2 和 s1 中任意字符 k?
先遍歷 s1 找到指定字符 k,記錄下當前位置?
從k字符開始,按s2的長度後移其余的數據
將s2拷貝到k所在的位置
輸出s1。
代碼如下:
#include?<stdio.h>
#include?<string.h>
void?main()
{
char?s1[100];
char?s2[20];
char?k;
int?i,pos,len;
printf("input?s1:?");scanf("%s",?s1?);
printf("input?s2:?");scanf("%s",?s2?);
getchar();//濾掉回車符
printf("input?k:?");scanf("%c",?&k?);
for(?i=0;s1[i];i++?)
if?(?s1[i]==k?)
break;
}
pos=i;?//記錄下待插入的位置
len=strlen(s2);?//得到s2長度
for(?i=strlen(s1);i>=pos;i--?)?//後移字符串
{
s1[i+len]=s1[i];
}
strncpy(?&s1[pos],?s2,?len?);?//插入數據
printf("%s\n",?s1?);?//輸出字符串
}