我有一个学校项目,我必须重新编码memccpy()
函数。
我使用2个程序来检查我的代码是否正常工作。第一个是只有一个主要的小程序。 第二个程序由另一个学生开发(如果你想看到它,可以找到here)
使用我的程序,没有问题,我的memccpy和原始函数都从dest指针返回右边字符的右指针。 但是对于第二个程序,原始函数返回一个比指针开始地址更低的指针地址,例如:
src
值的起始地址:0x7fff712edc40
0x712edc44
0x7fff712edc44
因此,当有人在他的计算机上编译并且我的代码返回正确的地址时,它必须来自第二个程序。
有人知道会导致这种行为的原因吗?
这是我的ft_memccpy()函数:
void *ft_memccpy(void *str_dest, const void *str_src, int c, size_t n)
{
unsigned int i;
char *dest;
char *src;
char *ptr;
dest = (char *)str_dest;
src = (char *)str_src;
i = 0;
ptr = 0;
while (i < n && ptr == 0)
{
dest[i] = src[i];
if (src[i] == ((char)c))
ptr = dest + i + 1;
i++;
}
return (ptr);
}
编辑:我编辑因为我得到了投票,很多用户都没有理解我的问题。所以我认为它不够清晰,我希望这个编辑会^^&#39;。
答案 0 :(得分:0)
这可能是64位指针和32位指针的问题。
您的ft_memccpy
将返回64位指针,因此输出
0x7fff712edc44
虽然系统memccpy
返回了32位的
0x712edc44