这是我已经实现的 strcat 函数,但是当我转到 line 时出现分段错误*dst++ = *src++;
。我已经递增src
,直到'\0'
我想从那里开始附加下一个字符串。你能告诉我为什么它会出现分段错误吗?我这样做有什么逻辑错误*dst++ = *src++;
吗?
char *strconcat(char *dst, char *src)
{
char *fdst;
fdst = dst;
if (dst == '\0' || src == '\0')
return fdst;
while (*dst != '\0')
dst++;
while (*src != '\0')
*dst++ = *src++;
return fdst;
}
嘿,我经历了下面给出的许多解决方案,并进行了以下更改,但是当我开始连接两个字符串时仍然遇到分段问题,这是我的整个代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *strconcat(char *dst, const char *src);
void main()
{
char *str1 = "Stack";
char *str2 = "overflow";
printf("MY CONCAT:%s\n",strconcat(str1, str2));
printf("INBUILT CONCAT:%s\n",strcat(str1, str2));
}
char *strconcat(char *dst, const char *src)
{
char *fdst;
int dst_len = 0, src_len = 0;
dst_len = strlen(dst);
src_len = strlen(src);
fdst = (char *) malloc(dst_len + src_len + 1);
fdst = dst;
if (src == NULL)
return fdst;
while(*dst)
{
dst++;
fdst++;
}
while(*src)
*fdst++ = *src++;
*fdst = '\0';
return fdst;
}