0

使用 VS2010 编译这些行

unsigned final_value;
long    int offset=109572;
long    lSize=2;                            //2 Bytes
char    *buffer;
buffer = (char*) malloc (sizeof(char)*lSize);
mybinfile = fopen("binfile.bin","rb");
fseek(mybinfile,offset,SEEK_SET);
fread(buffer,lSize,1,mybinfile);
fclose(mybinfile);
sscanf(buffer,"%u",&final_value);

运行此代码,final_value 返回一个负值。(从控制台使用 NMAKE 编译的相同代码返回正确的正值。)我该如何解决这个问题?这可能是由于一次溢出可能是由于我的 vs2010 设置不正确

预先感谢

4

1 回答 1

0

scanf用于读取 TEXT (字符串),您正在获取两个字节并将其传递给scanf()- 除非您的两个字节恰好是两位数(值中为 0x30-0x39),并且之后的下一个字节是零,它肯定不会你所期望的。

目前尚不清楚你希望你的两个字节代表什么,但我很确定你在做什么是“错误的”。

至于值为负,你是如何打印的?

于 2013-04-13T17:02:41.833 回答