C语言 打印字符简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:53:36
#include<stdio.h>
main()
{
char a[20];
scanf("%s",a);
if(a=='a') printf("asb");
else
printf("a=%s\n",a);
}

为什么无论输入什么, if都为假 啊? 总是输出else下面的.

比较字串需要使用strcmp,返回值0表示两个字串相等,返回值大于0表示前者比后者大,返回值小于0表示后者比前者大。例如:
if (strcmp(a, "a")==0)
如果需要比较字符数组a的第一个字符是否等于a应该这样写:
if (a[0] == 'a') 或者 if (*a == a)

如果光用a的话表示的就是a数组的地址,而你用'a'表示的是a这个字母的ASCII码在这里是97,也就是你在用地址这个整数和97这个整数比较,因为在内存里用户不可能用到像97这样的地址单元,一般像这么小的地址单元是操作系统保留用来存放中断向量或者端口的信息内容,用户是不可访问的,所以这个数组的存放地址不可能用到97,自然就总是假啦

此处输入的a是字符串,
而lz用来比较的是单个字符
当然是不准确的

a是数组,你判断怎么用数组名和字符比较呢,应该用if(a[0]=='a')这样才行,数组名其实是个地址。