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

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

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

#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

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11357817.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存