簡體   English   中英

計算 c 中文件的校驗和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM