数组比较问题!!!
我队磁盘扇区进行读写测试,把写入值放入CHAR BUF1[512];
读出值放入CHAR BUF2[512]; 用memcmp(buf1,buf2,512);
老出错,但通过打印显示数据正确啊memcmp返回值不相等啊
程序如下:
for(j = 0; j < NumOfLBASector; j++) //按LBA模式进行整个磁盘写数据
{
outportb(0x1f3,j);
outportb(0x1f4,j>>8);
outportb(0x1f5,j>>16);
outportb(0x1f6,(0xe<<4)|(j>>24));
outportb(0x1f7,0x30);
temp1 = (j+i) % 256;
memset(buf1, temp1, sizeof(buf1));
while(inportb(0x1f7) != 0x58);
for(k = 0; k < 512; k++)
{
outportb(0x1f0,buf1[k]);
}
//读数据
outportb(0x1f3,j);
outportb(0x1f4,j>>8);
outportb(0x1f5,j>>16);
outportb(0x1f6,(0xe<<4)|(j>>24));
outportb(0x1f7,0x20);
while(inportb(0x1f7) != 0x58);
for(k = 0; k < 512; k++)
{
buf2[k] = inportb(0x1f0);
}
if(memcmp(buf1, buf2,sizeof(buf1)))
{
fprintf(fp,time(&time));
fprintf(fp,"\n数据效验错误!!")
fprintf(fp,"\n读写次数:%4d,LBA 模式扇区号: %ld\n",i,j);
}