C++基础解决思路

C++基础
 初学C,C++, 现在有一基础问题
long  a;
 fseek(fp,0L,SEEK_SET);
1.  原来用fgetc()一次读一个字节,可正确出显示
 a = fgetc(fp);
 a + = fgetc(fp)<<8;
 a + = fgetc(fp)<<8<<8;
 a + = fgetc(fp)<<8<<8<<8;
cout<<"a  16进制 "<<hex<<a<<endl;     

2.  现在想换一种方法,用fread一次读取4个字节:
 char  fldValue[4];            //
 fread(fldValue,4,1,fp);   //这样读有问题吗?
 cout<<"fldValue  16进制 "<<hex<<a<<endl;
以上显示的是asc码,请问如何把这读取四个字符,转成与方法1一样的结果? 

说明: 其实要读的这四个字节,表示的是一个地址值(如:1266 ,16进制表示为: 00 00 03 1F)

------解决思路----------------------
这样吧

int val=0;
fread(&val,4,1,fp);
cout<<hex<<val<<endl;
------解决思路----------------------
引用:
Quote: 引用:

这样吧

int val=0;
fread(&val,4,1,fp);
cout<<hex<<val<<endl;

可能是我int型类型用错了(用char[4]),晚上回家验证一下,由此又生一困惑,如果:

fread(&val,10,1,fp);

一次读出10个字节,那在这里实际存入的是否是只有4个字节 ,多出的6个字节丢失 ? (int型 32位是占 4个字节 )




不会丢失,会泄漏,程序进入UB暴走模式