C语言中判断两个数组内容是不是相同!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中判断两个数组内容是不是相同!相关的知识,希望对你有一定的参考价值。

急!!! C语言中判断两个数组内容是否相同!给个办法!
例如定义了一个 char ID[20]=123456789;
又输入了一个char ID1[20];scanf("%s",ID1);
怎么判断 ID与ID1的内容相等呢?
谢谢大家了!!!

C语言有个函数

memcmp是用来进行内存比较的

extern

int

memcmp(void

*buf1,

void

*buf2,

unsigned

int

count);

if(0==memcmp(ID,ID1,20))

//ID1等于ID2

先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2.13级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。

产生来源

在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

关于可变长数组(VLA)的问题:原来的C89标准中是不允许可变长数组出现的,但是在C99标准中,加入了对VLA的支持,但是支持的编译器不多,而且由于栈溢出的安全问题,没有太多的人敢用这个可变长数组,所以在C11标准中又把它规定为可选实现的功能了。

以上内容参考:百度百科-数组

参考技术A

两个数组若长度不等,则两数组不等;若长度相等,则可用库函数memcmp(a,b,n);判断(其中a、b是两个数组指针,n是长度),返回0则a与b相等,否则不等。若是两个字符串则无论二者是否等长,都可直接调用库函数strcmp就可解决。该函数原型是int strcmp(const char *a,const char *b);,用两个字符串实参指针调用后返回1则表示a字符串大于b字符串,若返回-1则是b字符串>a字符串,返回0则表示两个字符串相等。所以只要用if语句判断一下,返回值不为0则二字符串不相等,为0则相等。使用以上两函数都得包含头文件string.h,下面提供两个字符串比较代码作参考:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void)
    char a[]="The quick brown fox jumps over a lazy dog.";
    char b[]="The moon, the sun and the star...",t;
    if((t=strcmp(a,b))==0)
        printf("a == b\\n");
    else if(t<0)
        printf("a < b\\n");
    else printf("a > b\\n");
    return 0;

参考技术B 使用'/0'啊,即先用长度函数(不好意思我不记得拼写了)判断两者长度,长度相同时,求出长度n,此处n=1。然后a[1]='/0',b[1]='/0'(意思即是a[n]=b[n]='/0'),然后计算时就会忽略后面的不定空间的数据了。 参考技术C 使用字符串比较函数strcmp:
原型:extern int strcmp(const char *s1,const char * s2);
用法:#include <string.h> 功能:比较字符串s1和s2。
说明: 当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
引入头文件string.h然后再用if (strcmp(ID, ID1) == 0)做判断即可。
参考技术D C语言有个函数 memcmp 是用来进行内存比较的
extern int memcmp(void *buf1, void *buf2, unsigned int count);

if(0==memcmp(ID,ID1,20)) //ID1等于ID2

以上是关于C语言中判断两个数组内容是不是相同!的主要内容,如果未能解决你的问题,请参考以下文章

c语言数组元素判断是不是相同以及相同的个数

C语言数组判断是不是有重复元素?

C语言判断两个长度不等的字符数组是不是相等的方法

C语言中判断两个字符串是不是相同的方法

C语言如何写才能判断两个数组相等

C语言:判断一个数是不是为回文数,要求如下: