[英]Calculate checksum of a file in 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 (!feof(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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.