将包含十六进制值的文件加载到char数组中

将包含十六进制值的文件加载到char数组中,c,arrays,C,Arrays,这对你们中的一些人来说似乎很基本,但请尝试帮助我 我创建了一个BMP文件,它存储了一个4 x 3的图像。此文件的内容(FILEHEADER、FILEINFOHEADER、颜色字节和填充以十六进制表示) 我试图编写一个loadFile函数来加载BMP文件并将其存储到一个二维整数数组中 我首先尝试找出如何将文件内容存储到字符数组中,然后尝试对字符数组进行strcpy,并将其转换为int值(我还没有转换) 但现在我已经尝试加载文件并放入一个字符数组。。。(这不起作用,但我希望得到一些关于我是否在正确的

这对你们中的一些人来说似乎很基本,但请尝试帮助我

我创建了一个BMP文件,它存储了一个4 x 3的图像。此文件的内容(FILEHEADER、FILEINFOHEADER、颜色字节和填充以十六进制表示)

我试图编写一个loadFile函数来加载BMP文件并将其存储到一个二维整数数组中

我首先尝试找出如何将文件内容存储到字符数组中,然后尝试对字符数组进行strcpy,并将其转换为int值(我还没有转换)

但现在我已经尝试加载文件并放入一个字符数组。。。(这不起作用,但我希望得到一些关于我是否在正确的方向上的反馈),以及我将如何着手解决这个问题

#include <stdio.h>
#include <stdlib.h>

#define length 30
#define rows   7

int main()
{

FILE *myBmp;
myBmp = fopen("myBmp.bmp", "r"); //for now i'm not sure what the r is for

//read file into array
char hexArray[rows][length];
int c;

for (c = 0; c < rows; c++) {
    fscanf(myBmp, "%c", &hexArray[c]);
}

for (c = 0; c < rows; c++) {
    printf("Number is: %c\n", hexArray[c]);
}

fclose(myBmp);
}
#包括
#包括
#定义长度30
#定义第7行
int main()
{
文件*myBmp;
myBmp=fopen(“myBmp.bmp”,“r”);//现在我不确定r是用来做什么的
//将文件读入数组
字符六边形[行][长度];
INTC;
对于(c=0;c
BMP位图格式与strcpy所需的以0结尾的文本字符串没有任何共同之处,也许可以探索
memcpy
。为什么不使用这样的库来为您提供所有这些以及更多功能呢?顺便说一句,
fopen(“myBmp.BMP”,“r”)
中的
“r”
代表“读取模式”我认为您对数据表示法感到困惑。BMP头和数据是未编码的数据字节。您不能使用
fscanf
阅读它们。这是ASCII编码的文本。您可以使用类似于
fread
的内容来阅读它们。您的困惑可能在于使用某种十六进制转储工具,该工具将值显示为十六进制字符串。那只是为了你的方便。每对十六进制字符代表一个原始字节。它们也可以显示为3个十进制数字、3个八进制数字或8个1/0。您还需要在fopen调用中使用“br”——二进制的
b