69,369
社区成员
发帖
与我相关
我的任务
分享
#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 = malloc( 20*sizeof(char) );
gets( str );
str_ins = 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 = realloc(str_ins,(str_len-n+1+str_ins_len+100)*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 = realloc(str,(str_len+str_ins_len+100)*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 );
}
#include<iostream>
#include <string>
using namespace std;
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) );
cin.getline(str ,sizeof(str));
str_ins = (char*)malloc( 10*sizeof(char) ); cin.getline(str_ins ,sizeof(str_ins));
cin>>n;//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+100)*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+100)*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 );
}