字符串及其他类型数据的比较

一、字符串的比较

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

posted @ 2019-03-02 21:59  小白Hello_world!  阅读(851)  评论(0编辑  收藏  举报