int main()
{
char buffer[100];
fread(buffer,1,4,stdin);
int i=0;
while(i<4)
{
printf ("%c,\n",buffer[i]);
i=i+1;
}
getch();
}
fread 函数如何知道,何时停止读取输入流,size 和 count 元素的含义是什么,以及如何操纵 size 和 count 以获得最大的流读取速度?
int main()
{
char buffer[100];
fread(buffer,1,4,stdin);
int i=0;
while(i<4)
{
printf ("%c,\n",buffer[i]);
i=i+1;
}
getch();
}
fread 函数如何知道,何时停止读取输入流,size 和 count 元素的含义是什么,以及如何操纵 size 和 count 以获得最大的流读取速度?
打印int
?中的所有字节 请记住,anint
是 32 位的,即 4 个字节。将其读入char
缓冲区可以更轻松地访问int
.
编辑:类型的一点解释int
......
假设你有一个int
:
int someIntValue = 0x12345678;
这以 32 位存储在内存中。由于单个字节 ( char
) 是 8 位,因此 . 有四个字节int
。中的每个字节int
都可以使用char
数组或指针来访问:
char *someCharPointer = (char *) &someIntValue;
现在您可以访问这四个单独的字节,并查看它们的值:
for (int i = 0; i < sizeof(int); i++)
printf("someCharPointer[%d] = 0x%02x\n", i, someCharPointer[i]);
以上将打印(在 x86 等小端机器上):
someCharPointer[0] = 0x78 someCharPointer[1] = 0x56 一些字符指针[2] = 0x34 一些字符指针[3] = 0x12
如果您现在更改someIntValue
为数字1
someIntValue = 1;
并再次打印出来,你会看到这样的结果:
一些字符指针[0] = 0x00 一些字符指针[1] = 0x00 一些字符指针[2] = 0x00 一些字符指针[3] = 0x01
int
如果您int
在内存中存储了一个类型为 value 的变量0x12345678
,它的存储方式如下:
8 位 ,----^---。 | | +--------+--------+--------+--------+ |00111000|01010110|00110100|00010010| +--------+--------+--------+--------+ | | `-----------------v-----------------' | 32 位
这int
与四个字节(或)char
、0x78
和0x56
相同。0x34
0x12
但是,如果我们将 更改int
为数字,1
那么它的存储方式如下:
8 位 ,----^---。 | | +--------+--------+--------+--------+ |00000000|00000000|00000000|00000001| +--------+--------+--------+--------+ | | `-----------------v-----------------' | 32 位
这int
与四个字节(或)char
、0x00
和0x00
相同。0x00
0x01
因此,现在您希望可以看到int
以.char
int
int