急!!! 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标准中又把它规定为可选实现的功能了。
以上内容参考:百度百科-数组
两个数组若长度不等,则两数组不等;若长度相等,则可用库函数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.