原因:
“==”比较的是值是否相等,数组的数组名是首元素在内存中的地址值,所以用“数组名==数组名”是比较地址值,而你定义了两个字符数组,在内存中开辟了两个地址不一样的空间,所以用“==”比较两个字符数组名肯定是不相等的。
解决办法:
用C库提供的字符串比较函数。
例如:
// 你代码中的if语句改为
if(strcmp(a, c) == 0) { printf("true"); }
字符串比较函数
int strcmp(const char *str1, const char *str2)
参数
返回值
#include <stdio.h>
#include <string.h>
int main()
{
char c[30];
char a[30];
int i,m,n;
gets(c);
n=strlen(c)-1;
m=n;
for(i=0;i<=m;i++){
a[i] = c[n];
n--;
}
if(a==c) //这个语句是判断地址是否相等,如果要判断值,请用if(strcmp(a,c) == 0)
{
printf("true");
}else{
printf("false");
}
return 0;
}
看我代码写的注释
for (i = 0; i <= m; i++)
{
a[i] = c[n];
if (a[i] == c[n])
{
n--;
}
}
if (strcmp(a, c) == 0)
{
printf("true");
}
你的a字符串没有赋值,并且a与c两个字符串的比较应该用strcmp函数
strcmp() 用来比较字符串(区分大小写),其原型为:
int strcmp(const char *s1, const char *s2);