注册 登录
编程论坛 C语言论坛

麻烦指教一下,为什么运行到最后错误,不出结果?怎样改正?

huaheshang 发布于 2020-02-09 16:39, 1363 次点击
#include"stdio.h"
#include"string.h"
char *insert(char *s1,char *s2,int n)
{
    int i,j,k;
    i=0;
    j=0;
    k=0;
      for(i=0;i<n;i++)
      {
         s1[j]=s1[i];
         j++;
      }
      while(s2[k]!='\0')
      {
         s1[j]=s2[k];
         j++;
         k++;
      }
      while(s1[n]!='\0')
      {
         s1[j]=s1[n];
         j++;
         n++;
      
      }
    s1[j]='\0';
   
    return s1;
   
   
   
    }

int main()
{
    char str1[100]={0},str2[20]={0};
    char *str;
    int n;
    puts("字符串1:");
        gets(str1);
    puts("插入位置:");
        scanf("%d",&n);
        getchar();
    puts("字符串2");
      gets(str2);
      str=insert(str1,str2,n);
     printf("%s",str);
      getchar();
      return 0;

}
2 回复
#2
吹水佬2020-02-09 17:12
insert()
1、将s1第n个字符起右边整块右移s2块长
2、从s1的第n个字符起写入s2
#3
huaheshang2020-02-09 18:01
#include"stdio.h"
#include"string.h"
char *insert(char *s1,char *s2,int n)
{
 static char jh[100]= {0};
    int i,j,k;
    i=0;
    j=0;
    k=0;
      for(i=0;i<n;i++)
      {
         jh[j]=s1[i];
         j++;
      }
      while(s2[k]!='\0')
      {
         jh[j]=s2[k];
         j++;
         k++;
      }
      while(s1[n]!='\0')
      {
         jh[j]=s1[n];
         j++;
         n++;
      
      }
    jh[j]='\0';
   
    return jh;
   
   
   
    }

int main()
{
    char str1[100]={0},str2[20]={0};
    char *str;
    int n;
    puts("字符串1:");
        gets(str1);
    puts("插入位置:");
        scanf("%d",&n);
        getchar();
    puts("字符串2");
      gets(str2);
      str=insert(str1,str2,n);
     printf("%s",str);
      getchar();
      return 0;

}
1