我试着用c来计算文件的校验和。
我有一个约100 MB的随机文件,我想计算校验和。
我从这里尝试以下代码: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(!feof(fp)&&!ferror(fp))”
任何帮助都将不胜感激。
1条答案
按热度按时间kulphzqa1#
这里的问题是您没有检查fopen的返回值。如果无法打开文件,fopen将返回NULL。这意味着fp是一个无效的指针,从而导致分段错误。
您应该更改代码以检查fopen的返回值并相应地处理错误。