首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >strcmp比较下注预定义和接收的字符串

strcmp比较下注预定义和接收的字符串
EN

Stack Overflow用户
提问于 2018-01-23 14:56:05
回答 1查看 90关注 0票数 1

这是一个mplab和声代码,我试图在客户端接收数据,我想从服务器插座控制LED,文本"START“将打开LED,"STOP”将关闭LED,当我调试代码时,它显示Appbuffer80有所有null变量,ACK[] =最后一个变量是null \0,在AOK[].I中也是一样。我想知道这是一个正确的比较字符串的方法,就像我在这里写的代码一样。因为当我调试代码时,它会转义此行并跳转到服务器任务init()。请帮帮我。

代码语言:javascript
运行
复制
case APP_TCPIP_WAIT_FOR_RESPONSE: 
{ 
    char Appbuffer[80]; 
    static const char ACK[]="START"; 
    static const char AOK[]="STOP"; 
    memset(Appbuffer, 0, sizeof(Appbuffer)); 
    if (!TCPIP_TCP_IsConnected(appData.clientSocket)) 
    { 
        SYS_CONSOLE_MESSAGE("\r\nConnection Closed\r\n"); 
        appData.clientState = APP_TCPIP_WAITING_FOR_COMMAND; 
        break; 
    } 
    if (TCPIP_TCP_GetIsReady(appData.clientSocket)) 
    { 
        TCPIP_TCP_ArrayGet(appData.clientSocket, (uint8_t*)Appbuffer, sizeof(Appbuffer) - 1); 
        SYS_CONSOLE_PRINT("%s", Appbuffer); 
        if(!strcmp(Appbuffer, ACK)) //// breakpoint 
        { 
            BSP_LEDStateSet(BSP_LED_1,BSP_LED_STATE_ON); 
            BSP_LEDStateSet(BSP_LED_2,BSP_LED_STATE_ON); 
            BSP_LEDStateSet(BSP_LED_3,BSP_LED_STATE_ON); 
        } 
        else if(!strcmp(Appbuffer, AOK)) // breakpoint 
        { 
            BSP_LEDStateSet(BSP_LED_1,BSP_LED_STATE_OFF); 
            appData.serverState = APP_TCPIP_CLOSING_CONNECTION; 
            SYS_CONSOLE_MESSAGE("Connection was closed\r\n"); 
        } 
    } 
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-23 15:07:44

由于调用了函数memset,AppBuffer的值全部为空。在您发布的代码中,我没有看到AppBuffer被赋值。因此,AppBuffer本质上是一个长度为零的字符串,因此当您将其与AOK进行比较时,结果为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48395814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档