简体   繁体   English

C中的字符串比较(strcmp)问题

[英]Problem with String compare(strcmp) in C

I'm newbie in C. I want to compare string that I use '#DEFINE' and char buf[256]. 我是C语言的新手。我想比较使用'#DEFINE'和char buf [256]的字符串。 This is my code. 这是我的代码。

#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)
{

}

My C compiler tell me the systax error that "../src/server.c:417: error: expected expression before '=' token". 我的C编译器告诉我systax错误,即“ ../src/server.c:417:错误:'='标记之前的预期表达式”。 But if I change to "if(strcmp(buf,SRV_SHOWMENU) == 0)" just one compare is ok. 但是,如果我更改为“ if(strcmp(buf,SRV_SHOWMENU)== 0)”,则只需进行一次比较就可以了。

Thank you. 谢谢。

You don't need to use '=' sign after #define. 在#define之后,您无需使用'='符号。 You can read more here . 您可以在这里阅读更多内容。

As already said, remove the = signs in the #defines 如前所述,删除#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) 
{ 

}

With the = in, the pre compiler will turn if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0) into 使用= in,预编译器会将if(strcmp(buf,SRV_SHOWMENU) == 0 || strcmp(buf,SRV_REGISTER_FAIL) == 0)转换为

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM