关于用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; }