gpt4 book ai didi

c++ - 我的 memcpy 有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:21 24 4
gpt4 key购买 nike

我写了一个函数来实现memcpy

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
char *memcpy(char *dest,char *src,int n){

char *ch=dest;
while (n--)
*ch++=*src++;
return dest;
}

int main(){

char *src="georgia";
int n=strlen(src);
char *dest=new char[n];
std::cout<<*memcpy(dest,src,n)<<std::endl;
return 0;
}

但它只打印一个g。为什么?

最佳答案

因为您正在打印单个字符。

std::cout<<*memcpy(dest,src,n)<<std::endl;

这取消引用目标缓冲区 (*memcpy),因此返回字符串的第一个字符(即 g)。你应该没问题使用这个:

std::cout << memcpy(dest, src, n) << std::endl;

除此之外,它仍然行不通:您需要在拷贝中包含字符串的终止 NULL 字符,但 strlen 将其从字符串的长度中排除;所以你的缓冲区缺少 1 个字符。您需要将 1 添加到 n 以平衡它,一切都应该没问题。

int n = strlen(src) + 1;

关于c++ - 我的 memcpy 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3431701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com