
也许用链表比较好实现,下面是用数组实现的程序:
#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.”
}
/*添加注释,排序子程序,插入子程序*/#include<stdio.h>
#include<string.h>
/*交换两个字符子程序*/
void swap(char *num1,char *num2)
{
char ch
ch = *num1
*num1 = *num2
*num2 = ch
}
/*排序子程序由小及大*/
void pai_xu(char *p)
{
int i,j,len
len = strlen(p)
for(i = 0i <len -1i++){
for(j = i+ 1j <lenj++){
if(p[i] >p[j])swap(&p[i],&p[j])
}
}
}
/*插入子程序,返回新字符串的长度*/
int cha_ru(char *src,char wait)
{
char *pointer
int len
len = strlen(src)
pointer = src + len + 1
*pointer = '\0'
pointer -= 2
while(pointer >= src){
if(*pointer >= wait) *(pointer+1) = *pointer
else {
*(pointer+1) = waitbreak
}
pointer--
}
if(pointer <src) *(pointer+1) = wait
return len+1
}
/************************主函数*****************************/
int main(void)
{
char ch,a[80],*p
int i,len
printf("\n输入一个字符串:\n")
gets(a)/*输入字符串*/
pai_xu(a)/* 排序子程序*/
printf("%s\n",a)
printf("\n请输入待插入的字符:\n")
scanf("%c",&ch)
cha_ru(a,ch)
printf("\n%s\n",a)
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)