十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
如果是整型数组可以str【2】 == 3
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网络空间、营销软件、网站建设、萨尔图网站维护、网站推广。
但如果是字符型比较的是ASCII值,str[2] == '3' 或者 str[2] == (3的ASCII码)
如果字符型的是整形数字的话就直接比较和你的一样
第一,字符数组和字符串是不同的,字符数组可以不含有'\0',而字符串的最后一个字符必然是'\0'。
第二,比较两字符串,是从两字符串的第一位开始比较ASCII码,第一位相同则看第二位,以止类推,例如“AB"是大于“CDEFGHIJK"的。
第三,字符串中只要出现'\0‘,后面的根本就不存在了,字符数组是,如:char s[5]={'a','b','\0’,'e','k'},而字符串是 char s[5]="abcd".
第四,如果一个字符串是另一个字符串从头开始的子串,则母串大,这如果你了解了前三点,这就是当然的了,因为母串的后一位不是'\0',而子串已经是'\0'了。
可以使用库函数strcmp比较。
strcmp是C语言比较字符串的库函数。形式为
int strcmp(char *a, char *b);
该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1.
所以,要判断字符串相等,可以使用
if(strcmp(string1, string2) == 0)
如果返回为0,则相等,否则不等。
strcmp(str1,str2)函数是比较两个字符串的函数:
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1str2,则返回正数;
若str1str2,则返回负数。
例如:
该函数的原型声明:
extern int strcmp(const char *s1,const char *s2);
那么,strcmp函数的声明规则是什么?它如何比较两个字符串的大小?
规则如下:
当s1s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1s2时,返回正数;
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A""B" "a""A" "computer""compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
ANSI标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。
所以:
用它比较Follow me和Computer design的话,它会只比较F与C这两个字符串的首元素的大小,所以Follow me 比较大。
c语言中字符串比较的意思就是从第一个字母逐一比较,一旦有不同的字母就停止运算,上面的表达式中到第五个字母才出现不一致 ef成立故其逻辑值为1。
c语言中有专门的库函数对字符串进行比较,函数为strcmp(a,b)包含在string.h头文件中。(a,b为字符型数组或两个字符串常量)。
一个数字以响应的话就是这样:还是用strcmp函数,要一个一个对比就不需要passcheck[]数组的
#include string.h
#include stdio.h
char key();
int pass(unsigned char);
int main ()
{
unsigned char password[]={7,4,5,6}; //用于存储设置好的密码
if (pass(password) == 1)
printf("ok!");
else
printf("failer");
return;
}
char key() //接收输入一个一个的比。因为输入是缓冲输入,所以必须回车才会响应
{
char p;
scanf("%c",p);
return c;
}
int pass(unsigned char password[])
{
char c;
for(int i = 0; i 5; i++)
{
c = key();
if(password[i] != c) return 0; //输入一个错误就提示错误退出。
}
return 1;
}