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标准中又把它规定为可选实现的功能了。

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14

两个数组若长度不等,则两数组不等;若长度相等,则可用库函数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;
}

第2个回答  2010-12-10
使用'/0'啊,即先用长度函数(不好意思我不记得拼写了)判断两者长度,长度相同时,求出长度n,此处n=1。然后a[1]='/0',b[1]='/0'(意思即是a[n]=b[n]='/0'),然后计算时就会忽略后面的不定空间的数据了。
第3个回答  2010-12-10
使用字符串比较函数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)做判断即可。
第4个回答  推荐于2018-03-20
C语言有个函数 memcmp 是用来进行内存比较的
extern int memcmp(void *buf1, void *buf2, unsigned int count);

if(0==memcmp(ID,ID1,20)) //ID1等于ID2
{
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网