noa zatta下海作:TC 字符串比较的问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 22:41:52
用以下的程序

main
{
char a[4]="abcd";
if a=="abcd"
{
printf("\a");
}
}

原意是想让字符数组a的值=ancd的时候响铃一次,这应该是必然成立的,因为数组直接初始化就等于"abcd",但是,TC认为条件不成立,这是怎么回事?哪里错了????

#include<stdio.h>
#include<string.h>
int main(){
char a[4+1] = "abcd";
if(strcmp(a, "abcd")==0)
printf("\a");
}

首先字符串数组最后要多存一个字符'\0'表示结束, 所以一定要多开一位。 第二, 字符串的比较是调用字符串函数strcmp(), 当比较的两个字符串完全相等时, 返回值为0。

a表示的是数组都首地址, "abcd"是字符串常量的首地址, 你的那种写法的意思是, 比较两个地址是不是相等, 而不是比较两个字符串的内容是不是相等

“必然成立”, 呵呵, 说的这么绝对, 我都不好意思给你解答了:)

以下代码测试可以通过:
#include <stdio.h>
main()
{
char a[4] = "abcd";
if(a == "abcd")
{
printf("\a");
}
getchar();
}

C里不能那样比较
...
if(a[0]=='a'&&a[1]=='b'&&a[2]=='c'&&a[3]=='d')
...
你可以写个循环或用strcmp来判断