当前位置: 代码迷 >> C语言 >> 字符串处理
  详细解决方案

字符串处理

热度:321   发布时间:2005-03-29 19:24:00.0
字符串处理
#include"stdio.h"
#include"string.h"
typedef struct
  { char vec[30];
    int len;
  }node;
//把串r2插入到串r1的第i个字符开始的位置上
void *insert(node *r1,node *r2,int i)
{  int k;
   if(i>=r1->len)   printf("不能插入!");
   else
   {  for(k=r2->len-1;k>=i;k--)
        r1->vec[r2->len+k]=r1->vec[k];
      for(k=0;k<r2->len;k++)
        r1->vec[i+k-1]=r2->vec[k];
      r1->len=r1->len+r2->len;
      r1->vec[r1->len]='\0';
   }
   return r1;
}
main()
{  node *r1,*r2;
   int i;
   r1=(node*)malloc(sizeof(node));
   r2=(node*)malloc(sizeof(node));
     strcpy(r1->vec,"abcdefg");
     strcpy(r2->vec,"234");
     r1->len=strlen(r1->vec);
     r2->len=strlen(r2->vec);
     scanf("%d",&i);
     insert(r1,r2,i);
     printf("%s\n",r1->vec);
}//比如说  abcd  在第1位插入 11,结果应该是a11bcd     而不是 a11d
搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------

直接用数组来写直观一点 #include"stdio.h" #include"string.h"

void insert(char str1[],char str2[],int k) { int i; char str3[30]; char *p1,*p2; p1=str1; p2=str2; strcpy(str3,str1); for(i=0;i<k;i++) p1++; while(*p2!='\0') { str3[i]=*p2; i++; p2++; } while(*p1!='\0') { str3[i]=*p1; i++; p1++; } strcpy(str1,str3); }

main() { char str1[30]="abcde"; char str2[30]="123"; int i; printf("input insert position:\n"); scanf("%d",&i); insert(str1,str2,i); printf("%s",str1); getch(); }

[此贴子已经被作者于2005-3-29 21:53:46编辑过]


----------------解决方案--------------------------------------------------------
                  #include"stdio.h"
#include"string.h"
typedef struct
  { char  vec[30];
    int len;
  }node;
/*/把串r2插入到串r1的第i个字符开始的位置上*/
void *insert(node *r1,node *r2,int i)
{  int k;
   if(i&gt;=r1-&gt;len)   printf("不能插入!");
   else
   {  for(k=r1-&gt;len-1;k&gt;=i-1;k--)
        r1-&gt;vec[r2-&gt;len+k]=r1-&gt;vec[k];
      for(k=0;k&lt;r2-&gt;len;k++)
        r1-&gt;vec[i+k-1]=r2-&gt;vec[k];
      r1-&gt;len=r1-&gt;len+r2-&gt;len;
      r1-&gt;vec[r1-&gt;len]='\0';
   }
   return r1;
}
main()
{  node *r1,*r2;
   int i;
   r1=(node*)malloc(sizeof(node));
   r2=(node*)malloc(sizeof(node));
     strcpy(r1-&gt;vec,"abcdefg");
     strcpy(r2-&gt;vec,"234");
     r1-&gt;len=strlen(r1-&gt;vec);
     r2-&gt;len=strlen(r2-&gt;vec);
     scanf("%d",&amp;i);
     insert(r1,r2,i);
     printf("%s\n",r1-&gt;vec); getch();
}/*比如说  abcdefg  在第1位插入 234,结果是234abcdefg*/
----------------解决方案--------------------------------------------------------
  相关解决方案