读取c中的二进制值

Ste*_*en 0 c binary

我可以从二进制文件中读取无符号整数,但其中一个值打印为负数.

预期价值:

45788331,281302247,461354227,13127,299215653,2356985123,

打印出的价值观:

45788331,281302247,461354227,13127,299215653,-1932982173,

第6个值打印为负数,但我正在读取未签名的整数列表?

我的代码如下

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        FILE * fp;
        ssize_t read;
        int r = 0;

        fp = fopen("numbers.bin", "rb");
        if (fp == NULL)
                exit(-1);

        while(fread(&r, sizeof(unsigned int), 1, fp) == 1)
        {
                printf("%d\n", r);
        }

        fclose(fp);
        if (line) free(line);

        exit(0);
}
Run Code Online (Sandbox Code Playgroud)

Nei*_*etz 5

printf("%d\n", r);打印出带符号的十进制整数.

你要: printf("%u\n", r);

另外,r声明int不是unsigned int.