您的位置:首页 > 其它

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

2011-09-20 23:00 225 查看
#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 );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐