全心思齐网

c语言输入一个字符串,如何在指定位置插入一个字符?

也许用链表比较好实现,下面是用数组实现的程序:

#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 ); //输出字符串

}

匿名回答于2019-07-27 12:53:00


相关知识问答