我尝试使用以下C程序从stdin读取整数。
#include <unistd.h>
#include <stdio.h>
int main() {
int a = 0;
read(0, &a, sizeof(int));
printf ("a = %d\n",a);
}
然而,我得到了奇怪的结果:当我输入34时,我认为程序输出34,但它确实是668723.为什么?
答案 0 :(得分:2)
read()
读取字节而不是ascii
read()函数将尝试从文件
中读取字节
ASCII 34\n
在二进制文件中变为0001010 00110100 00110011
。 (或者由于字节顺序而真的\n43
)
转换为十进制的下一个0001010 00110100 00110011
变为668723