文件读写函数的一些不同的使用方法。
各位好~
最近一直在搞那个文件加解密系统,最近在研究文件读写函数,如下面事例:
1.cpp
#include <stdio.h>
int main (void)
{
size_t result;
char buf[512];
FILE * fp1 = fopen ( "f.mp3", "rb" );
FILE * fp2 = fopen ( "1.mp3", "wb+" );
while ( ( result = fread ( buf, sizeof(char), 512, fp1 ) ) > 0 )
{
if ( fwrite ( buf, sizeof(char), result, fp2 ) < result )
{
printf("fail to write\n");
return 1;
}
if( result == -1)
{
printf("fail to read\n");
return 1;
}
}
fclose( fp1 );
fclose( fp2 );
return 0;
}
#include <stdio.h>
int main (void)
{
size_t result;
int buf[512];
FILE * fp1 = fopen ( "f.mp3", "rb" );
FILE * fp2 = fopen ( "2.mp3", "wb+" );
while ( ( result = fread ( buf, sizeof(int), 512, fp1 ) ) > 0 )
{
if ( fwrite ( buf, sizeof(int), result, fp2 ) < result )
{
printf("fail to write\n");
return 1;
}
if( result == -1)
{
printf("fail to read\n");
return 1;
}
}
fclose( fp1 );
fclose( fp2 );
return 0;
}
#include <stdio.h>
int main (void)
{
size_t result;
bool buf[512];
FILE * fp1 = fopen ( "f.mp3", "rb" );
FILE * fp2 = fopen ( "3.mp3", "wb+" );
while ( ( result = fread ( buf, sizeof(bool)*512, 1, fp1 ) ) > 0 )
{
if ( fwrite ( buf, sizeof(bool)*512, result, fp2 ) < result )
{
printf("fail to write\n");
return 1;
}
if( result == -1)
{
printf("fail to read\n");
return 1;
}
}
fclose( fp1 );
fclose( fp2 );
return 0;
}
while ( ( result = fread ( buf, sizeof(bool)*512, 1, fp1 ) ) > 0 )
{
if ( fwrite ( buf, sizeof(bool)*512, result, fp2 ) < result )
// fread返回1表示读取了size字节,返回0表示读取数量不够size字节,
//究竟是多少不知道!!-----------------确实是这样的!
文件都是以字节为单位,不可能出现0.7字节的内容。
你写1个只有1个字节的二进制文件。
然后几种方式都试一下,看看复制的文件和原文件的对比。
你好,那你能够针对下面代码不能完整复制文件的原因讲解一下么?FILE * fp1 = fopen ( "f.mp3", "rb" );
FILE * fp2 = fopen ( "3.mp3", "wb+" );
while ( ( result = fread ( buf, sizeof(bool)*512, 1, fp1 ) ) > 0 )
{
if ( fwrite ( buf, sizeof(bool)*512, result, fp2 ) < result )
{
printf("fail to write\n");
return 1;
}
if( result == -1)
{
printf("fail to read\n");
return 1;
}
}
fclose( fp1 );
fclose( fp2 );
就是大概说一下嘛。