从文件读取字符串到字符数组连接为整型,输出非预期
从文件中读取数据,在连接成整型,头一个没问题,第二个就全是非预期的数值,求解
文件读取查不出什么问题。
char dicii[256*sizeof(int)] = {0};
char dici1[256][sizeof(int)] = {0};
int dici[256] = {0};
//----------------省略----------
fin.seekg(0,std::ios::cur);
fin.read(cpq,3*sizeof(long long));
fin.read(dicc,256);
fin.read(dicii,256*sizeof(int));
for(int i=0,t=0;i<3;i++){
for(int j=0;j<sizeof(long long);j++){
cpq1[i][j] = cpq[t];
t++;
}
}
for(int i=0;i<3;i++) icpq[i] = *(long long*)cpq1[i]; //这个输出正常
for(int i=0,t=0;i<256;i++){
for(int j=0;j<sizeof(int);j++){
dici1[i][j] = dicii[t];
t++;
}
}
for(int i=0;i<256;i++) dici[i] = *(int*)dici1[i]; //连接后输出非预期 ? 数组,连接,字符串,文件读写, sizeof
[解决办法]
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
[解决办法]
for(int i=0;i<256;i++) dici[i] = *(int*)dici1[i];
这是怎么回事,从文件读到的数据,如何可以当作指针使用????
[解决办法]