checksum 구하는 코드

2023. 4. 15. 01:06코딩테스트 Intro/C

728x90

여기

바이너리 파일의 checksum은 일련의 바이트 값들의 합을 의미합니다. 따라서, 각 바이트 값들을 더한 결과를 반환하는 함수를 작성할 수 있습니다.

아래는 이를 구현한 예시 코드입니다.

c
Copy code
#include <stdio.h>

long checksum(char *filename) {
    FILE *fp;
    long sum = 0;

    // 파일 열기
    fp = fopen(filename, "rb");

    // 파일이 존재하지 않는 경우
    if (fp == NULL) {
        return -1;
    }

    // 파일 끝까지 읽으면서 바이트 값들을 더함
    while (!feof(fp)) {
        unsigned char c = fgetc(fp);
        sum += (long)c;
    }

    // 파일 닫기
    fclose(fp);

    return sum;
}
위의 함수는 입력으로 파일 이름을 받아 해당 파일의 checksum 값을 반환합니다. 파일을 바이너리 모드로 열어서 각 바이트 값을 읽어 합을 계산하고, 파일을 닫아줍니다. 파일이 존재하지 않는 경우에는 -1을 반환합니다.

사용 예시:

c
Copy code
long file_sum = checksum("example.bin");
printf("Checksum of the file: %ld\n", file_sum);
위와 같이 함수를 호출하면 파일의 checksum 값을 계산하여 출력합니다.
728x90