也许用链表比较好实现,下面是用数组实现的程序:
#include<stdio.h>
#include<string.h>
main()
{inti,j,k,m,n
chara[100],b[100],c
gets(a)
gets(b)
c=getchar()
m=strlen(a)
for(i=0i<mi++)
{if(a[i]==c)<br/>break<br/>}
if(i>=m)
{printf("出错!\n")<br/>return<br/>}
n=strlen(b)
k=m
for(j=m+nj>ij--,k--)
a[j]=a[k]
for(j=i,k=0j<n+ij++,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=0s1[i]i++ )
if ( s1[i]==k )
break
}
pos=i //记录下待插入的位置
len=strlen(s2) //得到s2长度
for( i=strlen(s1)i>=posi-- ) //后移字符串
{
s1[i+len]=s1[i]
}
strncpy( &s1[pos], s2, len ) //插入数据
printf("%s\n", s1 ) //输出字符串
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#defineN100
voidInsert(char*s)
intmain()
{
charstr[N]
printf("Inputastring:")
gets(str)
Insert(str)
printf("Insertresults:%s\n",str)
return0
}
voidInsert(char*s)
{
charstr[N]
char*t=str
strcpy(t,s)
for(*t!='\0's++,t++)
{
*s=*t
s++
*s=''
}
*s='\0'/*在字符串s的末尾添加字符串结束标志*/
}
扩展资料
C语言通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度。
C语言编程定义一个字符串的数组:
str={
“IloveC.”,
“IloveC++.”,
“IloveJAVA.”,
“IlovePython.”,
“IloveLabVIEW.”
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)