C 从标准输入数据读取-32位对64位

C 从标准输入数据读取-32位对64位,c,64-bit,C,64 Bit,我有一个我正在编译的32位和64位的程序。但是当我运行64位版本时,我的结果是错误的。尝试使用fread从stdin读取输入会导致64位读取0x400少于32位。是因为使用malloc分配的缓冲区不够大吗 ..... static char *buffer; int size; ..... buffer = malloc(size); if ((fread(buffer, 1, size, in) != size) fprintf(stderr, "not read completely

我有一个我正在编译的32位和64位的程序。但是当我运行64位版本时,我的结果是错误的。尝试使用fread从stdin读取输入会导致64位读取0x400少于32位。是因为使用malloc分配的缓冲区不够大吗

.....
static char *buffer;
int size;
.....
buffer = malloc(size);

if ((fread(buffer, 1, size, in) != size)
   fprintf(stderr, "not read completely\n");
else 
   fprintf(stderr, "input completely read\n");
.....

你是用gcc-Wall编译的吗?你收到警告了吗?您是否修复了它们?是否包括
fread()
的第三个和第二个参数是
size\u t
,它的大小取决于平台,如果编译器没有它的原型,它将得到两个
int
s。是的,我已经包含了标题-我修复的墙壁警告没有帮助。我想我们需要一个now。除了MCVE,还包括一个正在阅读的可用示例。