我需要的只是 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# 写的:(
最佳答案
这里出了问题:
ddj
不指向任何实际内存。因此拷贝将具有未定义的行为- 首先不需要复制。
这是你可以做的:
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/