字符串及其他类型数据的比较
一、字符串的比较
1、strcmp
格式:
int 变量名;
变量名=strcmp(str1,str2); //当str1与str2相同时,返回的是0;当str1<str2时,返回的是一个负值;当str1>str2时,返回是一个正值。
//字符串比较大小时,按顺序比较,一个字符一个字符的按照ASICII码值比较,直到不等或遇到字符串结束符为止。
实验一:
#include<stdio.h> #include<string.h> int main(void) { char name1[8]="apple"; char name2[8]; int ret; printf("请输入名字:"); scanf("%s", name2); ret = strcmp(name1, name2); printf("ret=%d\n", ret); return 0; }
实验二:(代码同上)
实验三:(代码同上)
2、strncmp
在实验一的代码中,输入函数使用的是scanf,为了保证安全,我们可以使用fgets。使用fgets虽然保证了安全,但当用户输入的字符串过短时,回车符也会被读进去:
实验四:
#include<stdio.h> #include<string.h> int main(void) { char name1[8]="apple"; char name2[8]; int ret; printf("请输入名字:"); fgets(name2,sizeof(name2),stdin); ret = strcmp(name1, name2); printf("ret=%d\n", ret); return 0; }
这样即使str1与str2相同时,也不会返回0,这时我们可以使用strncmp:
格式:
int 变量名;
变量名=strncmp(str1,str2,n); 含义是比较str1与str2的前n个字符,n一般写为strlen(被比较的值),注意是用的strlen,而不能用sizeof
实验五:
#include<stdio.h> #include<string.h> int main(void) { char name1[8]="apple"; char name2[8]; int ret; printf("请输入名字:"); fgets(name2,sizeof(name2),stdin); ret = strncmp(name1, name2,strlen(name1)); printf("ret=%d\n", ret); return 0; }
二、其他数据类型的比较
1、char、int、float、double类型数据的比较都使用:
大于:>
大于或等于:>= (中间没有空格)
小于:<
小于或等于:<= (中间没有空格)
等于:== (中间没有空格)
不等于:!= (中间没有空格)
2、比较运算的结果:(逻辑值)
结果为真:1
结果为假:0