问我正在检查一个字符串是否与特定值匹配。为什么这段代码不起作用?
char *string; ... if(string == "value") { /* string matches "value" */ ... }
答C 语言中的字符串是以字符数组的形式表示的,C 语言从不(赋值、比较等)整体操作数组。[脚注]==上面的代码片段中的运算符会比较两个指针——指针变量string的值和指向字符串字面量"value"的指针——以查看它们是否相等,也就是说,它们是否指向同一个位置。它们很可能不是,所以比较永远不会成功。
要比较两个字符串,通常使用库函数strcmp:
if(strcmp(string, "value") == 0) { /* string matches "value" */ ... }