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