如何比较整数数组?
我有四个传感器 (sen0-sen3),它们返回 1
或 0
,并且我正在使用 sprintf
创建一个值数组。然后我尝试将它们与 0000
或 1000
等进行比较。
我的问题是,即使 sen_array 的值为 1000,它也永远不会进入 else if 条件(直接到 else代码>条件)。
char sen_array[4];
sprintf(sen_array,"%d%d%d%d",sen0,sen1,sen2,sen3);
if(strcmp("0000",sen_array)==0)
{
motor_pwm((156*(0.20).),(156*(0.20)));
}
else if(strcmp("1000",sen_array)==0)
{
motor_pwm((156*(0.40)),(156*(0.40)));
}
else
{
motor_pwm((156*(0.80)),(156*(0.80)));
}
I have four sensors (sen0-sen3) which return either 1
or 0
and I am making an array of values using sprintf
. Then I am trying to compare them with 0000
or 1000
and so on.
My Problem is even if the value of sen_array
is 1000
, it never goes into the else if
condition (straight to else
condition).
char sen_array[4];
sprintf(sen_array,"%d%d%d%d",sen0,sen1,sen2,sen3);
if(strcmp("0000",sen_array)==0)
{
motor_pwm((156*(0.20).),(156*(0.20)));
}
else if(strcmp("1000",sen_array)==0)
{
motor_pwm((156*(0.40)),(156*(0.40)));
}
else
{
motor_pwm((156*(0.80)),(156*(0.80)));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您所看到的是内存损坏的产物。问题是您已将
sen_array
声明为char[4]
,它没有为终止 null 留下空间。将 sen_array 更改为:What you're seeing is an artifact of memory corruption. The problem is that you've declared
sen_array
to be achar[4]
, which doesn't leave room for a terminating null. Changesen_array
to:不使用 STL,我认为比较整数数组的最佳方法是使用比较内存块的 memcmp 函数。
Not using STL, I think the best way to compare integer arrays is using the
memcmp
function which compares blocks of memory.您的 sen_array 应至少有 5 个字符长 - 以便为 0 终止符腾出空间。
上面将 '1' '2' '3' '4' '\0' 写入 sen_array - 使其溢出并可能影响附近的变量
Use
char sen_array[5];
也许更好的解决方案是使用整数:
Your sen_array should be at least 5 chars long - to make room for a 0-terminator.
The above writes '1' '2' '3' '4' '\0' to sen_array - overflowing it and perhaps affecting a nearby variable
Use
char sen_array[5];
A perhaps better solution would be to work with an integer:
我认为 sen_array 应该至少有 5 个字符长,除非您将 sen_array 用于其他用途,更好更快的方法是使用
它进行比较。
I think sen_array should be atleast 5 chars long and unless you are using the sen_array for something else, A better and faster way is to do
And use this to compare.