文件数据转对应的数组

有时候需要把文件二进制数据转成对应的数组,以下程序能实现功能:

#include <stdio.h>
#include <string.h>

/*
 * feof():当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。
 * C 库函数 int getc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
 * C 库函数 int fprintf(FILE *stream, const char *format, ...) 发送格式化输出到流 stream 中。
 */

int main(void)
{
    unsigned char tmp;
    unsigned long count = 0;
    FILE *infp;
    FILE *outfp;
    infp = fopen("in.txt", "rb");
    outfp = fopen("out.txt", "wb");
    fprintf(outfp, "%s", "const char arr[]={");
    /* 要先读取再判断,不然会多出一个字节 */
    tmp = getc(infp);

    while (!feof(infp))
    {
        fprintf(outfp, "0x%02X,", tmp);
        count++;
        tmp = getc(infp);
    }

    fprintf(outfp, "%s", "};");
    fprintf(outfp, "\n\n//一共有%u个字节\n", count);
    printf("一共有%u个字节\n", count);
    fclose(infp);
    fclose(outfp);
    return (0);
}

转载请注明:guanjianhe的博客 » 文件数据转对应的数组