9.2 我在检查一个字符串是否跟某个值匹配。 为什么这样不行?
char *string;
...
if(string == "value") {
/* string matches "value" */
...
}
C 中的字符串用字符的数组表示, 而 C 语言从来不会把数组作为一个
整体操作 (赋值, 比较等)。 上面代码段中的 == 操作符比较的是两个
指针 --- 指针变量 string 的值和字符串常数 ``value" 的指针值
--- 看它们是否相等, 也就是说, 看它们是否指向同一个位置。
它们可能并不相等, 所以比较决不会成功。
要比较两个字符串, 一般使用库函数 strcmp():
if(strcmp(string, "value") == 0) {
/* string matches "value" */
}
翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)