我正在尝试读取包含二进制形式整数的二进制文件。我需要使用 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/