This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2355:memcmp / strncmp 在以下实例中都不起作用??

Guru**** 2538940 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/969516/msp430fr2355-memcmp-strncmp-neither-working-in-below-instance

器件型号:MSP430FR2355
#include 
#include 
#include 

int main (void)
{
char test[3]={[0... 2]= 0xFF};

int tr;

tr = memcmp (((const void *) test、(const void *) 0xFF、3);
LPM3;
}

当我使用 test[0]、test[1]或 test[2]时,TR 仅返回为0。。。 如何根据字符0xFF 一次检查整个数组?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您将与存储在0x00ff 的字符串进行比较、而不是与 char 进行比较。 这一铸就应该是一个线索。 或 memcmp()的描述。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我想知道这一点...如何使用 str 或 mem 函数来检查数组是否仍然填充0xFF?  我知道如何在 for 循环中执行它、但我想知道是否有使用 strncmp、strcmp 等的方法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    memcmp()和 strncmp()用于比较两个内存的*区域*,这不是您想要的。 for 循环、或者一段时间是前进的方向。

    去购买 Harbison 和 Steele's C 参考手册。 他们以很好的、虽然可读的、详细的方式解释了所有内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、虽然在比较3个项目时、蛮力破解方法是最好的、如果比较大量项目、您可能会玩一些指针游戏、然后加载2 (正确对齐!) 字符为16位整数、并将其与0xFFFF 进行比较。 在 MSP432上、您可以一次执行4个字符。