【发布时间】:2019-02-02 14:33:10
【问题描述】:
我必须编写一个函数来重现 c https://www.tutorialspoint.com/c_standard_library/c_function_strcpy.htm 中 strcpy 的行为
如果我对这个函数的理解正确,它会将字符串从源内存位置复制到目标内存位置,并返回指向目标内存位置的指针。
这里是我生成的代码:
#include <stdio.h>
char *ft_strcpy(char *dest, char *src)
{
char *mem = dest;
while (*src != '\0')
{
*dest = *src;
src++;
dest++;
}
*dest = '\0';
return mem;
}
int main()
{
char word[5] = "word";
printf("%s \n", word);
printf("word address is %p \n", word);
char *dest;
printf("dest address is %p", dest);
ft_strcpy(dest, word);
while (*dest != '\0'){
printf("%c", *dest);
dest++;
}
}
为了测试我的代码,我声明了一个包含“word”和指针 *dest 的字符数组。
但是,当我运行我的代码时,我得到一个 59873 分段错误。我认为是这条线导致了错误:
*dest = *src;
但是我不明白这条线有什么问题。对我来说,这一行的意思是“将 src 指针指向的值复制到 dest 指向的内存位置”。
谁能解释一下这段代码出了什么问题
【问题讨论】:
标签: c pointers segmentation-fault