C++ in>>hex>> 读取出来的文件部分缺失
如题,想编写一个可以读取文件内16进制格式数据的程序,但是经过测试发现一旦读取到16进制代码为"20"的,系统就会自动跳过,求解。程序如下:#include<stdio....
如题,想编写一个可以读取文件内16进制格式数据的程序,但是经过测试发现一旦读取到16进制代码为"20"的,系统就会自动跳过,求解。
程序如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include<iostream>#include<fstream>using namespace std;unsigned char a[10000][15];int b[10000][15];main(){ int i,j,k;ifstream in("2.bmp", ios::in|ios::binary);j=0;//while (!in.eof())for (k=0;k<10;k++) { for (i=0;i<16;i++) { in>>hex>>a[10000][15]; b[j][i]=int(a[10000][15]); } for (i=0;i<16;i++) { cout<<hex<<b[j][i]<<" "; } cout<<endl; j=j+1; }} 展开
程序如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include<iostream>#include<fstream>using namespace std;unsigned char a[10000][15];int b[10000][15];main(){ int i,j,k;ifstream in("2.bmp", ios::in|ios::binary);j=0;//while (!in.eof())for (k=0;k<10;k++) { for (i=0;i<16;i++) { in>>hex>>a[10000][15]; b[j][i]=int(a[10000][15]); } for (i=0;i<16;i++) { cout<<hex<<b[j][i]<<" "; } cout<<endl; j=j+1; }} 展开
1个回答
展开全部
in>>hex>>a[10000][15]; 语句里的数组元素下标超界。 最大下标 a[9999][14].
0x20 是空格符的编码。原文件是文本文件还是二进制文件?
二进制文件 应当用 无格式 方法 读写,
而 hex 是 有格式读写。
----
二进制文件 无格式 读 用成员函数:
istream& read (char* s, streamsize n);
----
0x20 是空格符的编码。原文件是文本文件还是二进制文件?
二进制文件 应当用 无格式 方法 读写,
而 hex 是 有格式读写。
----
二进制文件 无格式 读 用成员函数:
istream& read (char* s, streamsize n);
----
追问
能写一下具体的程序吗~?
追答
不能。因为我不知道你文件的内容和结构,是文本文件还是二进制文件。没法胡猜。
二进制文件 无格式 读 用成员函数: istream& read (char* s, streamsize n);
例如:for (k=0;k<10;k++) in.read(a[k],15) ;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询