在C中按块复制一个文件块



我试图将一个文件划分为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);

剩下的由您完成。

相关内容

  • 没有找到相关文章

最新更新