【问题标题】:Problem with String compare(strcmp) in CC中字符串比较(strcmp)的问题
【发布时间】:2010-08-30 14:34:53
【问题描述】:

我是 C 的新手。我想比较我使用 '#DEFINE' 和 char buf[256] 的字符串。 这是我的代码。

#define SRV_SHOWMENU "SRV_SHOWMENU"
#define SRV_LOGIN_TRUE = "SRV_LOGIN_SUC"
#define SRV_LOGIN_FAIL = "SRV_LOGIN_FAIL"
#define SRV_REGISTER_OK = "SRV_REGISTER_SUC"
#define SRV_REGISTER_FAIL = "SRV_REGISTER_FAIL"
char buf[256];      // buffer for client data
...
...
...
...
...
...
if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0)
{

}

我的 C 编译器告诉我系统税错误“../src/server.c:417: error: expected expression before ‘=’ token”。但如果我改为“if(strcmp(buf,SRV_SHOWMENU) == 0)”,只需比较一次即可。

谢谢。

【问题讨论】:

  • 删除第 2 到 5 行中的 = 符号。

标签: c string strcmp


【解决方案1】:

您不需要在#define 之后使用“=”符号。你可以阅读更多here

【讨论】:

    【解决方案2】:

    如前所述,删除#defines 中的= 符号

    #define SRV_SHOWMENU "SRV_SHOWMENU" 
    #define SRV_LOGIN_TRUE "SRV_LOGIN_SUC" 
    #define SRV_LOGIN_FAIL "SRV_LOGIN_FAIL" 
    #define SRV_REGISTER_OK "SRV_REGISTER_SUC" 
    #define SRV_REGISTER_FAIL "SRV_REGISTER_FAIL" 
    char buf[256];      // buffer for client data 
    ... 
    if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0) 
    { 
    
    }
    

    加上=,预编译器会将if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0)变成

    if(strcmp(buf,"SRV_SHOWMENU") == 0 || strcmp(buf,= "SRV_REGISTER_FAIL") == 0) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2013-10-11
      • 2013-10-05
      • 2016-07-21
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多