使用fread()读取BMP的文件头
Reading Fileheader of a BMP with fread()
我在Linux上工作,试图加载BMP的头。我已经看了标题,应该得到文件的前两个字符的"BM"。我一直在使用的代码:
FILE* fp = fopen(filename, "r");
if(!fp)
{
std::cout << "Unable to open file : " << filename << std::endl;
return NULL;
}
char* headerField = new char[2];
fread(headerField, 2, sizeof(char), fp);
std::cout << headerField << std::endl;
if(strcmp(headerField, "BM")){
delete [] headerField;
std::cout << "File is not a bitmap" << std::endl;
fclose(fp);
return NULL;
}
else{
std::cout << "Well done!" << std::endl;
}
我得到的输出是BM,后面跟着一个随机的额外字符,"BM7"、"BMF"、"BM*"。。。据我所知,fread()应该读入(在这种情况下)两个字符的数据,那么这个额外的字符是从哪里来的呢?
您大量混合了c和c++,我认为这是您首先遇到错误的一半原因。
现在,在c
中,字符串被称为以null结尾的字符串是有原因的。空字符