编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。
#include<stdio.h>#include<string.h>voidinsert(char*p1,char*p2,charc){inti,k,m,n,l;k=s...
#include<stdio.h>
#include<string.h>
void insert(char *p1,char *p2,char c)
{ int i,k,m,n,l;
k=strlen(p2);
for(i=0;*(p1+i)!='\0';i++)
if(*(p1+i)==c)
{ for(n=i+1;*(p1+n)!='\0';n++)
*(p1+n+k)=*(p1+n);
for(m=i,l=0;*(p2+l)!='\0';m++,l++)
*(p1+m+1)=*(p2+l);
i=i+k;
}
}
void main()
{
char s1[100],s2[100],ch;
printf("请输入两串字符:\n");
gets(s1);
gets(s2);
printf("请输入第二串字符插入的位置:");
scanf("%c",&ch);
insert(s1,s2,ch);
puts(s1);
}
为什么我的代码字符串短的能用,长的就不能输出。 展开
#include<string.h>
void insert(char *p1,char *p2,char c)
{ int i,k,m,n,l;
k=strlen(p2);
for(i=0;*(p1+i)!='\0';i++)
if(*(p1+i)==c)
{ for(n=i+1;*(p1+n)!='\0';n++)
*(p1+n+k)=*(p1+n);
for(m=i,l=0;*(p2+l)!='\0';m++,l++)
*(p1+m+1)=*(p2+l);
i=i+k;
}
}
void main()
{
char s1[100],s2[100],ch;
printf("请输入两串字符:\n");
gets(s1);
gets(s2);
printf("请输入第二串字符插入的位置:");
scanf("%c",&ch);
insert(s1,s2,ch);
puts(s1);
}
为什么我的代码字符串短的能用,长的就不能输出。 展开
1个回答
展开全部
//你这个程序基本写的很好的,但是字符串结束标记处理的不好,我加了一个语句
//还有因为你其实是做的字符串连接的事情,因此拼结后的字符串长度不能超过99,否则数组就越界了。
#include<stdio.h>
#include<string.h>
void insert(char *p1,char *p2,char c)
{
int i,k,m,n,l;
k=strlen(p2);
for(i=0;*(p1+i)!='\0';i++)
if(*(p1+i)==c)
{
for(n=i+1;*(p1+n)!='\0';n++)
*(p1+n+k)=*(p1+n);
*(p1+n+k)='\0'; //字符串结束标记
for(m=i,l=0;*(p2+l)!='\0';m++,l++)
*(p1+m+1)=*(p2+l);
i=i+k;
}
}
void main()
{
char s1[100],s2[100],ch;
printf("请输入两串字符:\n");
gets(s1);
gets(s2);
printf("请输入第二串字符插入的位置:");
scanf("%c",&ch);
insert(s1,s2,ch);
puts(s1);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询