gpt4 book ai didi

c++ - 如何复制包含 '\0' 字符的数据

转载 作者:行者123 更新时间:2023-11-30 04:00:47 26 4
gpt4 key购买 nike

我正在尝试复制包含“\0”的数据。我正在使用 C++ 。当研究结果是否定的时,我决定编写自己的函数来将数据从一个 char* 复制到另一个 char*。但它没有返回想要的结果!我的尝试如下:

#include <iostream>


char* my_strcpy( char* arr_out, char* arr_in, int bloc )
{
char* pc= arr_out;

for(size_t i=0;i<bloc;++i)
{

*arr_out++ = *arr_in++ ;
}

*arr_out = '\0';
return pc;
}

int main()
{
char * out= new char[20];
my_strcpy(out,"12345aa\0aaaaa AA",20);
std::cout<<"output data: "<< out << std::endl;
std::cout<< "the length of my output data: " << strlen(out)<<std::endl;
system("pause");
return 0;
}

结果在这里: enter image description here

我不明白我的代码有什么问题。

提前感谢您的帮助。

最佳答案

当您将 char* 写入 cout 或使用 strlen 计算它的长度时,您的 my_strcpy 工作正常> 根据 C 字符串行为,它们\0 处停止。顺便说一句,您可以使用 memcpy 复制一个 char block ,而不管 \0

关于c++ - 如何复制包含 '\0' 字符的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118818/

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