首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

编写strcat函数出现了有关问题

2013-04-26 
编写strcat函数出现了问题这是最近看到的一道笔试题:编写完整原型为char *strcat(char *strDest,const cha

编写strcat函数出现了问题
这是最近看到的一道笔试题:
编写完整原型为char *strcat(char *strDest,const char *strSrc);函数。自己试着编写了一下,但是出现了解决不了的问题。

#include <stdio.h>
#include <malloc.h>
#include <string.h>

char *strcat1(char *strDest,const char *strSrc)
{
char *pchar = strDest;
while(*pchar != '\0')
pchar++;

while(*strSrc != '\0')
{
*pchar++ = *strSrc++;
}


*pchar = '\0';

return strDest;
}

char *strcat2(char *strDest,const char *strSrc)
{
char *pchar;
//char *pchar = (char*)malloc(30);
while(*strDest != '\0')
{
*pchar++ = *strDest++;
}

while(*strSrc != '\0')
{
*pchar++ = *strSrc++;
}


*pchar = '\0';

return strDest;
}

int main()
{
char a[30] = "hello";
char b[10] = "world!";

puts(strcat1(a,b));
puts(strcat2(a,b));
getchar();

return 0;
}


第一个函数strcat1()是可以成功编译的。出问题的是strcat2()函数,如果是对字符串指针pchar没有分配内存的话,在strcat2()函数中加上char *pchar = (char*)malloc(30); 也不能实现想要的结果。
希望各位大侠解救小弟。。
[解决办法]
你第二个函数究竟是干什么呢?想把连接后的结果放进另外一个数组?那你
一、不应该在函数内开辟内存啊,这种写法是不安全的。最好是当成参数传进来
二、那你返回strDest干什么呢
还是你第二个函数是别的目的???
[解决办法]
char *strcat2(char *strDest,const char *strSrc) 
{
     while(*strDest != '\0');  
     while(*strSrc != '\0')     
     {       
         *strDest++ = *strSrc++;     
     }         
     return strDest; 

直接用strDest,不用pchar如何?
[解决办法]
pchar空间是在函数内分配的,返回后被销毁了,哪里还有helloworld。
[解决办法]
第二个函数有问题

热点排行