从文件中读取1个字节

时间:2016-09-28 22:00:37

标签: c

我需要从文件中读取一个字节。通常在读取时,我使用char数组作为缓冲区。但是,我需要能够使用byte执行二进制操作,这不能用char数组完成。这就是我所拥有的:

read(file, buffer, 1);

我已经尝试将缓冲区设置为char和int,但两者都给我警告它需要一个void *参数。但是,当然,这不允许二进制操作,如&。

如何存储缓冲区以便我可以对其执行二进制操作?

4 个答案:

答案 0 :(得分:6)

您可以使用函数int fgetc (FILE *fp)。 返回值为int值,范围为0到255或EOF

答案 1 :(得分:1)

可以使用charunsigned数据类型执行二进制操作。即使它的数组二进制操作可以对数组的单个元素进行。

供您参考。

ssize_t read(int fd, void *buf, size_t count);

缓冲区必须是charactercharacter array的地址,在您的单char中就足够了。如果要使用数组,请使用元素array[0]并对其执行操作。

如上述评论所述

unsigned char c; 
read(file, &c, 1);

答案 2 :(得分:1)

您可以读取一个char数组(据说)知道该怎么做,然后对该数组的第一个元素执行二进制操作。

答案 3 :(得分:1)

typedef unsigned char uint8_t; /* Not necessary if you are using C99, i.e. <stdint.h>. */

uint8_t buffer[BUF_SIZE] = {0};
    .
    .
    .
if (fread(buffer, sizeof(buffer[0]), 1, file) == 1)
{
    buffer[0] ^= 0xFFu; /* Or any other bit-wise operation. */
}

参考 -
1. https://linux.die.net/man/3/fread
2. http://en.cppreference.com/w/c/types/integer