Я написал программу для конкатенации двух строк, и она бросает ошибку сегментации во время выполнения в строке s1 [i + j] = s2 [j], in for loop ..... И i я не в состоянии понять, почему это происходит так .... Просьба координировать меня, где я иду не так.программа конкатенации в C
char* concatenate(char *s1, char *s2)
{
int i,j=0;
for(i=0; s1[i] != '\0'; i++);
for(j=0; s2[j] != '\0'; j++)
{
s1[i+j] = s2[j];
}
s1[i+j] = s2[j];
return s1;
}
char *s1 = (char *) malloc(15);;
char *s2 ;
s1 = "defds";
s2 = "abcd";
s1 = concatenate(s1,s2);
// printf("\n\n%s\n\n",s1);
Для того, чтобы кто-либо мог ответить на этот вопрос, вам нужно показать функцию, которая _calls_ эта функция. –
@James прав, и немного глупо, что несколько плакатов прыгали в поиске всех видов ошибок с 'concatenate', которые (1) являются точно такими же проблемами, что и' strcat', и (2) не имеют ничего общего с выдаёт ошибку сегментации. –
@John: Запись функции замены strcat бесполезна, если ваша функция имеет те же недостатки, что и 'strcat'. Указывая на недостатки, мы просто пытаемся помочь OP избежать этих проблем и тем самым сделать мир лучше. –