📜  C程序检查文件是否为JPEG文件(1)

📅  最后修改于: 2023-12-03 15:14:26.481000             🧑  作者: Mango

C程序检查文件是否为JPEG文件

在对文件进行处理或解码时,需要确保文件格式正确。本文介绍使用C程序检查文件是否为JPEG文件的方法。JPEG是一种常见的图像文件格式,其文件后缀为".jpg"或".jpeg"。

思路概述

JPEG文件格式的特征是以FF D8开始,以FF D9结束。因此,我们可以通过读取文件的前两个字节和后两个字节来确定文件是否为JPEG格式。

代码实现
#include <stdio.h>

int main(int argc, char *argv[]) {
    FILE *fp;
    char magic[4];

    if (argc != 2) {
        printf("usage: %s <file>\n", argv[0]);
        return 1;
    }

    fp = fopen(argv[1], "rb");
    if (!fp) {
        printf("cannot open file %s\n", argv[1]);
        return 1;
    }

    fread(magic, sizeof(magic), 1, fp);
    fclose(fp);

    if (magic[0] == 0xFF && magic[1] == 0xD8 &&
        magic[2] == 0xFF && magic[3] == 0xD9) {
        printf("file %s is a JPEG file\n", argv[1]);
        return 0;
    } else {
        printf("file %s is not a JPEG file\n", argv[1]);
        return 1;
    }
}
代码解析

本程序使用了文件操作库stdio.h中的freadfclose函数。其中,fread函数从文件流fp中读取magic数组指定的字节数,本例中为4个字节,即读取文件的开头两个字节和结尾两个字节。

接着,分别判断读取的四个字节是否为文件格式的特征字节,如果符合,则认为该文件是JPEG文件。

最后输出检查结果,如果是JPEG文件则返回0,否则返回1。