数组比较问题!!!

ffeige1984 2007-07-12 05:05:19
我队磁盘扇区进行读写测试,把写入值放入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);

 }
...全文
302 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
我啃 2007-07-12
  • 打赏
  • 举报
回复
memcpy使用汇编指令优化,比简单的一个个比较快很多~
fengdream 2007-07-12
  • 打赏
  • 举报
回复
调用库函数的话,编译器很容易优化,比自己实现效率要高
fengdream 2007-07-12
  • 打赏
  • 举报
回复
memcmp效率还可以,毕竟是库函数。
北方大冬瓜 2007-07-12
  • 打赏
  • 举报
回复
为什么不在

for(k = 0; k < 512; k++)
    {
buf2[k] = inportb(0x1f0);

}
直接比较?
taodm 2007-07-12
  • 打赏
  • 举报
回复
if(memcmp(buf1, buf2,sizeof(buf1)) != 0)
ffeige1984 2007-07-12
  • 打赏
  • 举报
回复
有没有其他方法解决啊!要求要高效率的
taodm 2007-07-12
  • 打赏
  • 举报
回复
memcmp在相等时返回0

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧