在unsigned int var中获取负值

Obtaining a negative value in unsigned int var

本文关键字:获取 var unsigned int      更新时间:2023-10-16

使用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

设置不正确所致。

提前致谢

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

目前还不清楚你想要你的两个字节代表什么,但我很确定你所做的是"错误的"。

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