c语言编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2。
#include<stdio.h>voidinsert(chars1[],chars2[],intpos);voidmain(){chars1[50],s2[50];in...
#include <stdio.h>
void insert(char s1[],char s2[],int pos);
void main()
{
char s1[50],s2[50];
int pos;
gets(s1);
gets(s2);
printf("请选择要插入的位置");
scanf("%d",&pos);
insert(s1,s2,pos);
}
void insert(char s1[],char s2[],int pos)
{
int i,a,b,c,d; /*分别计算出s1和s2的长度,然后s1从pos位向右移,s2插入*/
for(a=0;s2[a]!='\0';a++)
{if (s2[a+1]='\0')
b=a+1;
}
for(a=0;s1[a]!='\0';a++)
{if (s1[a+1]='\0')
d=a+1;
}
for (i=d-1;i>pos-2;i--)
{ s1[i+b]=s1[i];}
s1[d+b]='\0';
for(i=pos-1,c=0;i<b;i++,c++)
s1[pos]=s2[c];
for(i=0;s1[i]!='\0';i++)
printf("%c",s1[i]);
} 展开
void insert(char s1[],char s2[],int pos);
void main()
{
char s1[50],s2[50];
int pos;
gets(s1);
gets(s2);
printf("请选择要插入的位置");
scanf("%d",&pos);
insert(s1,s2,pos);
}
void insert(char s1[],char s2[],int pos)
{
int i,a,b,c,d; /*分别计算出s1和s2的长度,然后s1从pos位向右移,s2插入*/
for(a=0;s2[a]!='\0';a++)
{if (s2[a+1]='\0')
b=a+1;
}
for(a=0;s1[a]!='\0';a++)
{if (s1[a+1]='\0')
d=a+1;
}
for (i=d-1;i>pos-2;i--)
{ s1[i+b]=s1[i];}
s1[d+b]='\0';
for(i=pos-1,c=0;i<b;i++,c++)
s1[pos]=s2[c];
for(i=0;s1[i]!='\0';i++)
printf("%c",s1[i]);
} 展开
1个回答
展开全部
你写这个貌似不能实现额
用string.h库很容易实现的
要是你不能用string.h的话 你就再追问一次 我帮你把你这个改改 单貌似要改动的地方不少
#include <stdio.h>
#include <string.h>
void insert(char s1[],char s2[],int pos);
void main()
{
char s1[50],s2[50];
int pos;
gets(s1);
gets(s2);
printf("请选择要插入的位置: ");
scanf("%d",&pos);
insert(s1,s2,pos);
}
void insert(char s1[],char s2[],int pos)
{
int i,a,b;
char o[20];
b=0;
a=strlen(s1);
for(i=pos;i<a;i++)
{
o[b]=s1[i];
b++;
}
o[b++]='\0';
s1[pos]='\0';
strcat(s1,s2);
strcat(s1,o);
printf("%s",s1);
}
用string.h库很容易实现的
要是你不能用string.h的话 你就再追问一次 我帮你把你这个改改 单貌似要改动的地方不少
#include <stdio.h>
#include <string.h>
void insert(char s1[],char s2[],int pos);
void main()
{
char s1[50],s2[50];
int pos;
gets(s1);
gets(s2);
printf("请选择要插入的位置: ");
scanf("%d",&pos);
insert(s1,s2,pos);
}
void insert(char s1[],char s2[],int pos)
{
int i,a,b;
char o[20];
b=0;
a=strlen(s1);
for(i=pos;i<a;i++)
{
o[b]=s1[i];
b++;
}
o[b++]='\0';
s1[pos]='\0';
strcat(s1,s2);
strcat(s1,o);
printf("%s",s1);
}
追问
发现就计算字符串长度那里出现问题
改用strlen后面结果就能出来了,我计算的字符串长度的循环结构出什么问题了吗
追答
你那个IF貌似多余了
for里有判断S2[a]!=0
你还又判断了一次,,,,
去掉就好了
0_0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询