也許用連結串列比較好實現,下面是用陣列實現的程式:
#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 ); //輸出字串
也許用連結串列比較好實現,下面是用陣列實現的程式:
#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 ); //輸出字串
}