关于用fread和fwrite复制文件,复制时使用512字节的块
要求用fread和fwrite复制文件,复制时使用512字节的块。(最后一个块的字节数可能少于512)我的代码如下,出现越界,求大神指点
程序代码:#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
FILE *source_fp, *dest_fp;
int ch;
char str[512];
printf("%d,%d\n", sizeof(str), sizeof(str) / sizeof(str[0]));
if (argc != 3) {
fprintf(stderr, "usage:fcopy source dest\n");
exit(EXIT_FAILURE);
}
if ((source_fp = fopen(argv[1], "rb")) == NULL) {
fprintf(stderr, "Can't open %s\n", argv[1]);
exit(EXIT_FAILURE);
}
if ((dest_fp = fopen(argv[2], "wb")) == NULL) {
fprintf(stderr, "Can't open %s\n", argv[2]);
fclose(source_fp);
exit(EXIT_FAILURE);
}
while (feof(source_fp) == NULL && ferror(source_fp) == NULL)
{
fread(str, 512, 1, source_fp);//读取512字节的块,每次读取一个元素
fwrite(str, 512, 1, dest_fp);//写入1个元素,每个元素占有512字节
}//由于读取的文件不是512字节的整数倍,因此写入的时候出现越界“烫烫烫”
fclose(source_fp);
fclose(dest_fp);
return 0;
}








