一、不能通过函数memcpy或"=="来判断两个结构体是否相等:
typedef struct o_compile
{
char compile[50];//编译选项
float odds;//编译选项出现的概率
} Compile;
Compile s1,s2;
strcpy(s1.compile,"hellowold");
s1.odds = 0.12;
s2 = s1;//可以通过“=”进行赋值操作,但是不能通过“==”判断是否相等
而函数memcpy来判断两个结构体是否相等:memcmp函数是逐个字节进行比较的,而struct存在字节对齐,字节对齐时补的字节内容是随机的,会产生垃圾值,所以无法比较。
解决方法:
通过写一个判断函数比较结构体中的成员是否相等:
bool eq(Compile s1,Compile s2){
if(strcmp(s1.compile,s2.compile) == 0 && s1.odds == s2.odds){
return true;
}
return false;
}