C函数复制和返回字符串

时间:2018-01-01 08:49:10

标签: c string-function

char *duplicate(const char p[])
{
char *q;
strcpy(q,p);
return q;
}

此代码来自一个考试题目:“该函数无法正常工作。修改函数中的一个语句并使其正常工作。”

我已经编写了一个程序来使用这个功能,我似乎无法找到导致它崩溃的原因。如果我可以没有任何限制地修改它,那么它很容易。问题是:只修改一个语句。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

文件说

SYNOPSIS
       #include <string.h>
       char *strcpy(char *dest, const char *src);

DESCRIPTION
       The  strcpy()  function  copies the string pointed to by src, including
       the terminating null byte ('\0'), to the buffer  pointed  to  by  dest.

您的变量q尚未初始化,因此不包含用于保存其他字符串副本的缓冲区地址。

它是一个未初始化的指针,导致未定义的行为。

如何修复它:分配(malloc)一个足够大小的缓冲区,至少长度为p加1.然后将p复制到它,并返回其地址。