gpt4 book ai didi

检查零字节

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:28 25 4
gpt4 key购买 nike

我编写了一段代码来检查 512 字节 block 中的零。我遇到的一个问题是,如果我建立 checkin ,它似乎不会检查所有字节,这是代码:

int zerocheck(FILE *fp,unsigned long long seekpoint)
{
int j;

if(fseek(fp,seekpoint,SEEK_SET)==0)
{
char buf[seekwidth],cmp[seekwidth];

if(fread(buf,sizeof buf,1,fp)==1)
{
for (j=0;j<seekwidth;j++)
{
printf("%i\n!!!\n",buf[j]);

if (buf[j]!=0)
return 1;
else
return 0;
}
}
}

return 2;
}

打印只是为了调试。问题是如果检查零,它似乎没有正确检查所有字节。我可以从打印中看到,如果我有 1,它会打印出 1!但是一旦我在它不打印出 1 并且不返回正确的值之后添加 if 语句。我不知道如何解决它...

为了记录这件事,我有一个文件,我知道第二个字节是 1。如果我删除:

                if (buf[j]!=0)
return 1;
else
return 0;

它正确读取并给出了这个:

正在检查文件中的零...0!!!1个!!!0

但如果包含 if 语句,则输出如下:检查文件中的零...0!!!0!!!0

打印不是真正的问题,但重要的是检查每个字节...

最佳答案

您只检查第一个字节,然后立即返回 1 或 0!如果它如预期的那样为零,则需要继续处理下一个字节。

尝试删除以下两行:

else
return 0;

然后替换最后的:

return 2;

return 0;

那么如果整个 block 为零,您的函数将返回零,如果 block 不为零,则您的函数将返回一。

关于检查零字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com