c - 使用 open() 和 read() 读取 C 中的二进制整数文件

标签 c binary

我正在尝试读取包含二进制形式整数的二进制文件。我需要使用 open() 和 read() 函数,而不是 fopen() 等函数。

我打开文件并尝试读取它,但我的输出中出现了二进制符号。

char buffer[sizeof(int)];
int file1;
int bytesRead;
file1 = open(argv[1], O_RDONLY);
    if(file1 == -1)
    {
        printf("unable to open file\n");
        exit(1);
    }
    while((bytesRead = read(file1, &buffer, sizeof(buffer))))
    {
        printf("%d\n", buffer);
    }

有人能指出我正确的方向吗?

最佳答案

Error 1: read(file1, &buffer, sizeof(buffer)

当您使用数组时,无需将其地址传递给“read”调用。

Correction :
read(file1, buffer, sizeof(buffer);


Error 2 :  
while((bytesRead = read(file1, &buffer, sizeof(buffer))))
Correction : 
while((bytesRead = read(file1, &buffer, sizeof(buffer))) >= 0)

即使读取调用失败,while 循环也会计算为 true,因为它返回 -1
失败意味着真实。 当没有任何内容可供读取时,它返回 0,您可以对其进行检查
表明没有什么可读的了。

关于c - 使用 open() 和 read() 读取 C 中的二进制整数文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925871/

相关文章:

无法打印二进制计算

Python 二进制转十六进制

java - 使用 ImageJ 进行图像分割

c# - 将不同类型的对象传递给非托管函数

c - 查找维度数组中行中最小值和列中最大值的最小元素

c - C和MATLAB中的矩阵乘法,结果不尽相同

c - 有趣的可执行文件二进制转储

arrays - 将动态分配的字符串数组从 C 传递到 Fortran

c - 为什么 printf() 会出现运行时错误?

swift - 如何快速计算一个人的赞美的小数?