内存不能读
#define LONG 100int integer_1,integer_2;
void ReplaceString(char*source,char*text,char*result);
void RemoveString(char*source_1,char*result_1,int l);
int FindString(char*source_1,char*text_1);
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
main()
{
char buf_1[LONG],buf_2[LONG],buf_3[LONG];
gets(buf_1);
gets(buf_2);
gets(buf_3);
integer_1=strlen(buf_1),integer_2=strlen(buf_2);
ReplaceString(buf_1,buf_2,buf_3);
return 0;
}
void ReplaceString(char*source,char *text,char*result)
{
int l;
l=FindString(source,text);
if(l==-1)
exit(1);
RemoveString(source,result,l);
}
int FindString(char *source_1,char*text_1)
{
int i,j=0,lomp=0;
for(i=0;i<integer_1;i++){
if(*(source_1+i)==*(text_1+j))
j++;
else
j=0;
if(j==integer_2){
lomp=1;
break;
}
}
if(lomp==1)
return i;
else
return -1;
}
void RemoveString(char*source_1,char*result_1,int l)
{
char *message;
message=(char*)malloc(l);
strncpy(message,source_1,l);
*(message+l)='\0';
message=(char*)realloc(message,strlen(message)+strlen(result_1)+1);
strcat(message,result_1);
message=(char*)realloc(message,strlen(message)+integer_1-integer_2-l+1);
strcat(message,source_1+l+integer_2);
free(message);
puts(message);
}
为什么这个程序会导致内存不能够读呢?