我想从文件中读取数据,我需要以二进制形式打开文件并一次读取数据块吗?
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc,char* argv[])
{
int n;
FILE * fp;
size_t nbyte;
unsigned char * buffer[1024];
fp=open("file_test.txt",O_RDONLY);
read(fp,buffer,1);
printf("%sn",buffer[0]);
close(fp);
return 0;
}
open
/read
是fopen
/fread
的POSIX版本,open
不返回FILE*
指针。
unsigned char * buffer[1024];
用于字符串数组。你只需要一个缓冲unsigned char buffer[1024];
printf("%sn",...);
用于打印c字符串,通常不能打印二进制数据。
int main(void)
{
int fin = open("file_test.txt", O_BINARY | O_RDONLY);
if (!fin)
return 0;
unsigned char buffer[1024];
while (1)
{
size_t size = read(fin, buffer, sizeof(buffer));
if (size == 0)
break;
for (size_t i = 0; i < size; i++)
printf("%02X ", buffer[i]);
//break; print the whole file!
}
close(fin);
return 0;
}