c++ - 如何将 byte[] 复制到 char*?

标签 c++ c

我需要的只是 strcpy()。

我想看看缓冲区(字节数组)的前三个字节是否是字符串形式的“JMX”。

这是我目前所做的:

char * ddj;
strcpy( ddj, buffer ); //buffer is BYTE[]
if ( strcmp( "JMX", ddj ) == 0 ) //check first three chars are "JMX"
{
    buffer += 20;   //increase the index with 20
    size -= 20;     //int
}

我在 strcmp() 行遇到异常。有什么问题?

我希望我是用 C# 写的:(

最佳答案

这里出了问题:

  1. ddj 不指向任何实际内存。因此拷贝将具有未定义的行为
  2. 首先不需要复制。

这是你可以做的:

if(strncmp("JMX", buffer, 3) == 0) {
  buffer += 20;
  size -= 20;
}

这使用 strncmp而不是 strcmp ,从而确保比较的字节不超过三个。如果 buffer 可以包含少于三个字节,你应该这样做:

if(buf_len >= 3 && strncmp("JMX", buffer, 3) == 0) {
  buffer += 20;
  size -= 20;
}

关于c++ - 如何将 byte[] 复制到 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875050/

相关文章:

c++ - 通过引用将参数传递给 std::thread 函数是否安全?

c - 给结构体数组赋值时进程返回-1073741819 (0xC0000005)

c++ - 有条件包含的疑问

c++ - 为什么这个静态数组会在发布版本中导致一个非常长的 "generating code"步骤?

c++ - 用 C++ 编写和读取 Unicode 文件?

c++ - 假设 - 关于为*现有*静态/动态库制作 header

c++ - 为什么函数立即完成一次循环,然后再次运行?

c++ - 静态库

c - 'fopen' 返回 NULL - "no such file or directory"

c - 用于优化给定 CPU 架构的 GCC 选项