我必须从标准输入中读取正好4个字节,然后将其视为一个小字节序,并将其显示在标准输出上,但我不知道我读取的是否正好是4个字节。我尝试了以下方法:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <byteswap.h>
int main() {
uint32_t f;
printf("Enter a value :");
scanf ("%" SCNu32, &f);
printf("Value of integer:%d", f);
//printf("Value of integer:%d", __bswap_32(f));
return 0;
}
我不确定这是否正好读到4字节。我尝试了以下整数:
input->output
123->123
12345678->12345678
123456789->123456789
4294967295->-1
4294967294->-2
4294967296->-1
1->1
我认为打印f
会像这样:1234000
(f=1234
的值)或12345678
(f=123456789
的值)。
1条答案
按热度按时间9lowa7mx1#
要从
stdin
中读取4个字节,可以使用fread()
、getc()
或scanf()
:fread()
:getchar()
或getc()
:scanf()
:但是请注意,
stdin
默认以文本模式打开,这会导致遗留系统执行行尾转换,并且没有可移植的方式在开放流上更改此模式。还要注意的是,上述函数假设当前主机使用与文件相同的小端排序。最好避免这种假设,并执行可移植转换: