在unsigned int var中获取负值

时间:2013-04-13 15:58:15

标签: c++ visual-studio-2010

使用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错误设置

提前谢谢

1 个答案:

答案 0 :(得分:0)

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

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

关于价值是否定的,你是如何印刷的?