- #include <string.h>
- //#include <strings.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define BUFFER_SIZE 200
- long filesize(FILE *stream);
- int main(int argc,char **argv)
- {
- FILE *from_fd;
- FILE *to_fd;
- int read_num,write_num;
- long file_len = 0;
- char buffer[BUFFER_SIZE];
- //char *ptr;
- if(argc != 3)
- {
- fprintf(stderr,"Usage:%s fromfile tofile\\n",argv[0]);
- exit(EXIT_FAILURE);
- }
- if((from_fd = fopen(argv[1],"rb")) == NULL)
- {
- fprintf(stderr,"open %s error\\n",argv[1]);
- exit(EXIT_FAILURE);
- }
- if((to_fd = fopen(argv[2],"wb")) == NULL)
- {
- fprintf(stderr,"open %s error\\n",argv[2]);
- exit(EXIT_FAILURE);
- }
- /*
- fseek(from_fd,0L,SEEK_END);
- file_len = ftell(from_fd);
- fseek(from_fd,0L,SEEK_SET);
- */
- file_len = filesize(from_fd);
- printf("from_file size is %ld\\n",file_len);
- while(!feof(from_fd))
- {
- if((read_num = fread(buffer,sizeof(char),BUFFER_SIZE,from_fd)) < 0)
- {
- fprintf(stderr,"read error");
- exit(EXIT_FAILURE);
- }
- if(BUFFER_SIZE > file_len)
- {
- if((write_num = fwrite(buffer,sizeof(char),file_len,to_fd)) != file_len)
- {
- fprintf(stderr,"write error");
- exit(EXIT_FAILURE);
- }
- }
- else
- {
- if((write_num = fwrite(buffer,sizeof(char),BUFFER_SIZE,to_fd)) != BUFFER_SIZE)
- {
- fprintf(stderr,"write error");
- exit(EXIT_FAILURE);
- }
- file_len = file_len-BUFFER_SIZE;
- }
- bzero(buffer,BUFFER_SIZE);
- }
- fclose(from_fd);
- fclose(to_fd);
- exit(1);
- }
- long filesize(FILE *stream)
- {
- long curpos,length;
- curpos = ftell(stream);
- fseek(stream,0L,SEEK_END);
- length = ftell(stream);
- fseek(stream,curpos,SEEK_SET);
- return length;
- }
- //该片段来自于http://www.codesnippet.cn/detail/250620134255.html
来源: http://www.codesnippet.cn/detail/250620134255.html