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 を使用してコンパイルされた同じコードは、正しい正の値を返します。) どうすればこれを解決できますか? 1 つのオーバーフローが原因である可能性があります vs2010 の不適切なセットアップが原因である可能性があります

少し早いですがお礼を

4

1 に答える 1

0

scanfは TEXT (文字列) の読み取りに使用され、2 バイトをフェッチしてに渡しscanf()ます - 2 バイトが正確に 2 桁 (値の 0x30-0x39) であり、その後の次のバイトがゼロでない限り、それは絶対に行いませんあなたが期待するもの。

2バイトで何を表現したいのか正確にはわかりませんが、あなたがしていることは「間違っている」と確信しています。

負の値については、どのように印刷していますか?

于 2013-04-13T17:02:41.833 に答える