c语言字符数组如何比较?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言字符数组如何比较?相关的知识,希望对你有一定的参考价值。

1、C语言中字符是使用char来定义的,使用关系运算符(>,<,=)即可对字符进行比较。在编译器中定义a、b两个字符型变量,并为其赋值,按照如图所示编写代码。

2、运行代码后,我们可以得到如图所示结果。1表示条件为真,0表示条件为假。

3、字符串使用char[]来定义,可以使用strcmp()来判断大小,也可以使用关系运算符(>,<,=)判断大小。

4、使用strcmp()对字符串进行比较大小时,需要引入头文件string.h。

5、运行代码后,我们可以得到如图所示结果。使用strcmp进行判断时,返回结果为0,表示两个字符串相等。返回结果大于0,表示第一个参数字符串大。返回结果小于0,表示第二个参数字符串大。

参考技术A

C语言的字符数组有两种,比较方式也有所不同。

1 字符串。

C语言的字符串是用字符数组表示的。约定以'\\0'(ascii码0)作为结尾标记。

对于字符串类的字符数组,可以用string.h中的strcmp函数进行比较。

int strcmp(char *str1, char *str2);

其比较规则为:

a, 从左向右依次比较每个元素;

b, 如果出现str1的元素ascii码比较大,则返回1;如果出现str2元素ascii码比较大,则返回-1。如果相等,则继续。

c, 如果一直相等,直到遇到\\0,这时检查是否均为\\0,如果均为\\0,那么返回0;

d, 如果str1到\\0,而str2没到,返回-1; 否则返回1。

总结规则就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。


2 不带\\0结束的字符数组。

对于此类数组,没有库函数可供使用,只能自己写函数进行比较。规则可以仿照strcmp的规则。

由于没有\\0作为结束,所以参数中必须传入每个数组的元素个数。

int char_array_cmp(char *s1, int l1, char *s2, int l2)

    int lmin = l1>l2? l2:l1; //较小长度者。
    int i;
    
    for(i = 0; i < lmin; i ++)
        if(s1[i] > s2[i]) return 1;
        else if(s1[i] < s2[i]) return -1;
    
    //运行到这里,表示所有已判断元素均相等。
    if(l1 == l2) return 0;
    if(l1 > l2) return 1;
    
    return -1;//l1 < l2的情况。

参考技术B 首先,C必然定义为字符数组,C语言没有定义字符串的关键字,C语言用字符数组处理字符串。如果需要动态长度字符串必须用字符指针实现。我写了一个类似的程序。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
const int SIZE_INC=16;
char *a="abcd";
char *b="bcdef";
char *astr, *cptr;
char ch, ich;
int csize=0, cread=0;
// 读入未知长度字符串,以回车或者EOF结束
printf("Input a string:\n");
cptr = astr = (char *)malloc(SIZE_INC);
csize = SIZE_INC;
ich = getchar();
for (;;)
if (ich == '\n' || ich == EOF)
ch = '\0';
else
ch = ich;
if (cread == csize)
astr = (char *)realloc(astr, csize + SIZE_INC);
csize += SIZE_INC;
cptr = astr + cread;

*cptr = ch;
if (ch == '\0') break;
cread++; cptr++;
ich = getchar();

if (!strcmp(astr,a))
printf("The string you input equals string a.\n");
else if (!strcmp(astr,b))
printf("The string you input equals string b.\n");
else
printf("Your string is: %s\n",astr);
system("pause");
return 0;
参考技术C 这个应该挺简单吧 如果是string型 有个比较函数cmp(string a,string b)
如果是char 型 就用个循环 前提是两个数组长度一样
例: char a[n],b[n]
int s=0;
for(int i=0;i<n;i++)


if(a[i]==b[i]) s++; //s是对某位上相等的进行计数;
//s如果与n相等就说明数组相等,反之不是
参考技术D 百度登陆居然被屏蔽了。。。
答案已经打出来了,还是匿名发表吧,希望能帮到你:)
By way_du

假设有两个字符数组: char a[10],b[13];
int i=0;
bool check=true;
while (i<10&&check==true)

if (a[i]==b[i]) i++;
else

check=false;
if (a[i]>b[i]) cout <<"第一个字符数组大于第二个字符数组。";
else cout << "第二个字符数组大于第一个字符数组。";


if (check==true) cout << "第二个字符数组大于第一个字符数组。";

以上是关于c语言字符数组如何比较?的主要内容,如果未能解决你的问题,请参考以下文章

请教C语言字符串和字符数组的比较问题

C语言编程-用数组方法编写函数strcmp,比较两个字符串的大小。

如何让字符串数组的Contains忽略大小写

C语言比较字符串大小

如何让字符串数组的Contains忽略大小写

JAVA如何比较两数组大小