我正在尝试让这个程序说得好,但它说的还好 虽然我使变量值与if测试值相同
#include <stdio.h>
#include <stdlib.h>
int main()
{
char history[200];
history == "NY school";
if(history == "NY school")
{
printf("good");
}
else{printf("okay");}
return 0;
}
答案 0 :(得分:5)
您需要使用函数strcmp
即
if (strcmp(history ,"NY school") == 0) ....
否则你正在比较指针
加上改变
history == "NY school";
使用strcpy
答案 1 :(得分:2)
这应该适合你:
#include <stdio.h>
#include <string.h>
//^^^^^^^^ Don't forget to include this library for the 2 functions
int main() {
char history[200];
strcpy(history, "NY school");
//^^^^^^^Copies the string into the variable
if(strcmp(history, "NY school") == 0) {
//^^^^^^ Checks that they aren't different
printf("good");
} else {
printf("okay");
}
return 0;
}
有关strcpy()
的详情,请参阅:http://www.cplusplus.com/reference/cstring/strcpy/
有关strcmp()
的详情,请参阅:http://www.cplusplus.com/reference/cstring/strcmp/
答案 2 :(得分:1)
无法分配字符串(使用单个=
,而不是代码中使用==
。在标准标题strcpy()
中查找<string.h>
函数。
此外,使用关系运算符(==
,!=
等)无法比较字符串(或任何数组) - 这种比较比较指针(第一个元素的地址)数组)不是字符串的内容。要比较字符串,请再次在strcmp()
。
<string.h>
函数
答案 3 :(得分:-1)
通过一些实现定义的优化运气,这也可以起作用:
#include <stdio.h>
int main(void)
{
char * history = "NY school";
if (history == "NY school") /* line 7 */
{
printf("good");
}
else
{
printf("okay");
}
return 0;
}
至少它在gcc (Debian 4.7.2-5) 4.7.2
编译时有效,没有优化btw。
上面显示的代码打印:
good
在编译期间,它会触发警告(对于第7行):
warning: comparison with string literal results in unspecified behavior [-Waddress]