当前位置: 代码迷 >> C语言 >> [求助]写一个函数连接2个字符串(这个也有问题了)
  详细解决方案

[求助]写一个函数连接2个字符串(这个也有问题了)

热度:167   发布时间:2007-08-07 17:52:52.0
你这个就是动态的,所谓的动态就是调用malloc系列函数来获得的内存,不够还可以扩展

所谓的静态就像调用数组这样固定了的

----------------解决方案--------------------------------------------------------

int n;
scanf("%d",&n);
char *str=(char *)malloc(n*sizeof(char));
你的动态分配是这个意思???


----------------解决方案--------------------------------------------------------
空间不够还可以remalloc阿!!!
----------------解决方案--------------------------------------------------------

就是strcat函数吧,我这儿也有这样的一些函数,大家给看看

/****************************************************************************/
/* strlen */
/****************************************************************************/
size_t strlen(const char *s)
{ const char *r = s - 1;

while (*++r);
return r - s;
}

/****************************************************************************/
/* strcpy */
/****************************************************************************/
char *strcpy(char *s1, const char *s2)
{ char *result = s1;

while (*s1++ = *s2++);
return result;
}

/****************************************************************************/
/* strncpy */
/****************************************************************************/
char *strncpy(char *s1, const char *s2, size_t n)
{ char *result = s1;

if (n == 0) return result;
while ((*s1++ = *s2++) && --n != 0);
if (n > 1)
{
--n;
do *s1++ = 0; while (--n);
}
return result;
}

/****************************************************************************/
/* strcat */
/****************************************************************************/
char *strcat(char *s1, const char *s2)
{ char *result = s1;

while (*s1++);
--s1;
while (*s1++ = *s2++);
return result;
}

/****************************************************************************/
/* strncat */
/****************************************************************************/
char *strncat(char *s1, const char *s2, size_t n)
{ char *result = s1;

while (*s1++);
--s1;
while (n-- != 0)
if (!(*s1++ = *s2++)) return result;
*s1 = 0;
return result;
}

/****************************************************************************/
/* strchr */
/****************************************************************************/
char *strchr(const char *s, int c)
{ do
if (*s == c) return (char *)s;
while (*s++);
return NULL;
}

/****************************************************************************/
/* strrchr */
/****************************************************************************/
char *strrchr(const char *s, int c)
{ char *result = NULL;
do
if (*s == c) result = (char *)s;
while (*s++);
return(result);
}

/****************************************************************************/
/* memchr */
/****************************************************************************/
void *memchr(const void *s, int c, size_t n)
{ const unsigned char *st = (unsigned char *)s;
unsigned char ch = c;

while (n-- != 0)
if (*st++ == ch) { return (void *)--st; }
return NULL;
}

/****************************************************************************/
/* memset */
/****************************************************************************/
void *memset(void *s, int c, size_t n)
{ unsigned char *st = (unsigned char *)s;
unsigned char ch = c;

while (n-- > 0) *st++ = ch;
return s;
}


----------------解决方案--------------------------------------------------------
  相关解决方案