- 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
- 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入【相亲相爱一家人】
- 玩转CANoe,博客目录大全,点击跳转
一般做法,就是循环赋值,如下:
On key 'b'
{
long i;
byte A[5]={0x01,0x02,0x03,0x04,0x05};
byte B[5];
//怎么将A数组赋值给B数组?
for(i=0;i< elCount(A);i++)
{
B[i] = A[i];
}
}
On key 'h'
{
byte A[5]={0x01,0x02,0x03,0x04,0x05};
byte B[5];
memcpy(B,A,elCount(A));
write("**0x%x,0x%x,0x%x,0x%x,0x%x",B[0],B[1],B[2],B[3],B[4]);
}
这在我们诊断读取软件版本等信息时,常常需要转换
On key 'j'
{
long i;
byte A[5]={49,50,51,52,53};
char B[10];
for(i=0;i< elCount(A);i++)
{
B[i] = A[i];
}
write("**%s",B);
}
//输出:**12345
On key 'k'
{
long i;
byte A[5]={49,50,51,52,53};
char B[10];
memcpy(B,A,elCount(A));
write("**%s",B);
}
//输出:**12345
On key 'l'
{
char A[10]="12345";
byte B[10];
memcpy(B,A,strlen(A));
write("**%d,%d,%d,%d,%d",B[0],B[1],B[2],B[3],B[4]);
}
典型的字符串赋值问题,这就有很多中函数或者方法可用了,这里也可以用内置memcpy函数
On key 'm'
{
char A[10]="12345";
char B[10];
memcpy(B,A,strlen(A)); //方法1:
//strncpy (B,A,elcount(A)); //方法2:
//snprintf(B, elcount(B), "%s",A);//方法3
write("**%s",B);
}
On key 'n'
{
long Result;
byte A[5]={0x01,0x02,0x03,0x04,0x05};
byte B[5]={0x01,0x02,0x03,0x04,0x06};
Result = memcmp(A, B ,elCount(A));
write("byte A[5] and byte B[5] equal? %d",Result);
}
// 结果:byte A[5] and byte B[5] equal? -1
On key 'v'
{
char s1[7] = "Vector";
char s2[7] = "Vector";
if(strncmp(s1,s2,strlen(s1)))
write("not equal");
else
write("equal");
}
上面根据6个问题,介绍了最常用的一些赋值/比较的用法,更深一层的用法可以参考下Help文档。
memcpy 和memcmp 函数 根据参数不同重载了很多,不管是byte 数组,还是char 字符串,还是struct 结构体,都是在内存中占用连续内存的,都可以使用memcpy相互赋值。
- 要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。