1. 二进制文件复制
1-1. 处理超大文件用 fopen64()
1-2. fread, fwrite 可以处理任何类型数据 (struct 等), 而不会分裂数据
int binaryFileCopy()
{
const int BUFFE_RSIZE = 256 * 1024;
char buffer[BUFFE_RSIZE];
FILE *in, *out;
int len;
if((in = fopen("in", "rb")) == NULL)
{
printf("the file1 can not open\n");
return EXIT_FAILURE;
}
if((out = fopen("out", "wb")) == NULL)
{
printf("the new file can not open\n");
return EXIT_FAILURE;
}
while((len = fread(buffer, sizeof(char), BUFFE_RSIZE, in)) > 0)
{
fwrite(buffer, sizeof(char), len, out);
memset(buffer, 0, BUFFE_RSIZE);
}
fclose(out);
fclose(in);
return EXIT_SUCCESS;
}
2. 文本文件复制
int textFileCopy()
{
char ch;
FILE *in;
FILE *out;
if((in = fopen("in", "r")) == NULL)
{
printf("can't open the file\n");
return (EXIT_FAILURE);
}
if((out = fopen("out", "w")) == NULL)
{
printf("can't open the file\n");
return (EXIT_FAILURE);
}
while(!feof(in))
{
if ((ch = fgetc(in)) != EOF)
fputc(ch, out);
}
/*
while((ch = fgetc(in)) != EOF)
{
fputc(ch, out);
}
*/
fclose(in);
fclose(out);
return EXIT_SUCCESS;
}
0 件のコメント:
コメントを投稿