我试图将一个文件划分为x个大小为y(以字节为单位)的块,这样我就可以单独复制每个块。我该怎么做?
尝试使用fread
char buffer[ysize];
fread(buffer, ysize, 1, fp);
每次从文件中读取缓冲区中的ysize字节时。
一些结构stat结构中有额外的成员,这些成员在复制文件时很有用:
st_blksize文件的最佳I/O块大小。st_blocks中为文件分配的实际块数(检查本地系统)。
如果您读取的块大小是st_blksize的偶数倍,则您往往可以更有效地读取文件。
size_t desiredSize=1E4;//要读入的最大缓冲区大小size_t blocks=desiredSte_blksize;if(块<1)//故障安全测试块=1;size_t true_size=块*st.st_blksize;//这是要读的尺寸char*buffer=malloc(true_size);
失败的st_blksize,<stdio.h>为缓冲区大小提供了BUFSIZ宏。
x = fopen ( "x" , "rb");
if (x==NULL) {perror("file could not be opened"); exit(1);}
y = fopen ( "y" , "wb");
if (x==NULL) {perror("file could not be opened"); exit(1);}
char* buf = (char*) malloc (sizeof(char)*1024); //1024 is buffer size
要将1024个字符读入缓冲区:
fread(buf, sizeof(char), 1024, x);
剩下的由您完成。