计算c中文件的校验和



我尝试计算c中文件的校验和。

我有一个大约100MB的随机文件,我想计算校验和。

我从这里尝试这个代码:https://stackoverflow.com/a/3464166/14888108

int CheckSumCalc(char * filename){
FILE *fp = fopen(filename,"rb");
unsigned char checksum = 0;
while (!feof(fp) && !ferror(fp)) {
checksum ^= fgetc(fp);
}
fclose(fp);
return checksum;
}

但是我有一个分割错误。在这行"while (! fof (fp) &&! ferror (fp))">

任何帮助都将不胜感激。

这里的问题是您没有检查fopen的返回值。如果文件无法打开,fopen返回NULL。这意味着fp是一个无效的指针,导致分割错误。

您应该更改代码以检查fopen的返回值并相应地处理错误。

int CheckSumCalc(char * filename){
FILE *fp = fopen(filename,"rb");
if(fp == NULL)
{
//handle error here
return -1;
}
unsigned char checksum = 0;
while (!feof(fp) && !ferror(fp)) {
checksum ^= fgetc(fp);
}
fclose(fp);
return checksum;
}

相关内容

  • 没有找到相关文章

最新更新