char *duplicate(const char p[])
{
char *q;
strcpy(q,p);
return q;
}
此代码来自一个考试题目:“该函数无法正常工作。修改函数中的一个语句并使其正常工作。”
我已经编写了一个程序来使用这个功能,我似乎无法找到导致它崩溃的原因。如果我可以没有任何限制地修改它,那么它很容易。问题是:只修改一个语句。有什么想法吗?
答案 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
复制到它,并返回其地址。