将一个字符串插入到另一个字符串的某个位置

来源:互联网 发布:益盟卖软件怎么样 编辑:程序博客网 时间:2024/06/05 06:44
#include <stdio.h>#include <stdlib.h>#include <string.h>int StrInsert( char *str, int n, char *str_ins );void DestroyStr( char *str, char *str_ins);void main(){char *str,*str_ins;int n,i;str = (char * )malloc( 20*sizeof(char) );gets( str );str_ins = (char * )malloc( 10*sizeof(char) );gets( str_ins );scanf("%d",&n);i = StrInsert( str, n, str_ins );if ( i == 0 ){printf("wrong\n");}else{printf("%s\n",str);}DestroyStr( str, str_ins );}int StrInsert( char *str, int n, char *str_ins ){int i,j,str_len,str_ins_len;str_len = strlen( str );str_ins_len = strlen( str_ins );      //n不能小于1或大于被插入的字符串的长度if ( n<1 || n>str_len ){return 0;}else{   //重新为str_ins分配内存,将str字符串从n开始的字符串接到它后面str_ins =  (char * ) realloc(str_ins,(str_len-n+1+str_ins_len+1)*sizeof(char));if ( str_ins==NULL ){exit( 0 );}  for ( i=n-1,j=0; *(str+i); i++,j++ ){*(str_ins+str_ins_len+j) = *(str+i);}*(str_ins+str_ins_len+j) = '\0';str =(char * ) realloc(str,(str_len+str_ins_len+1)*sizeof(char));  if( str == NULL ){exit( 0 );}for ( j=0; *str_ins; j++ ){*(str+n-1+j) = *str_ins++;}*(str+n-1+j) = 0;return 1;  }}void DestroyStr( char *str, char *str_ins ){free( str );free( str_ins );}

 
原创粉丝点击