#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//1.如果以写的方式打开一个文件,如果文件存在,清空文件之前的内容,再写入。
void show1()
{
FILE *fp1 = fopen("F:\小石潭记.txt","w");
fputc('q',fp1);
}
//2.如果以写的方式打开一个文件,如果文件不存在,先创建该文件,再写入。
void show2()
{
FILE *fp2 = fopen("F:\show2.txt","w");
fputc('love',fp2); //缓存区 所以只能放入最后一个字符 e
}
//3.EOF标志 把大写变成小写
//1.先读文件 r 2.创建新文件 w 3.EOF判断 是否结束 getc while循环进行替换 4. putc
//#define EOF (-1)
void show3()
{
FILE*fr=fopen("F:\Let her go.txt","r");//fr指向源文件
FILE*fw=fopen("F:\Let her go_new.txt","w");//fw指向新文件
char fch;
while( (fch= fgetc(fr) )!= EOF) //注意优先级
{
if( fch >= 'A' && fch <= 'Z')
{
fch += 'a' - 'A';
}
fputc(fch,fw);
}
}
//4.1读写一个mp3.文件 二进制
void show4()
{
FILE *fr = fopen("F:\Roar.mp3","rb");
FILE *fw = fopen("F:\Roar_new.mp3","wb");
int ch;
while((ch = fgetc(fr)) != EOF)
{
fputc(ch,fw);
}
}
//4.2 高端版本
void show9 ( )
{
const char * src = "F:\Roar.mp3";
const char * dst = "F:\Roar_new2.mp3";
char buffer[1024];
FILE* fr = fopen(src, "rb");
FILE* fw = fopen(dst, "wb");
int read_length = 0;
do {
read_length = fread(buffer, 1, 1024, fr);
fwrite(buffer, 1024, 1, fw);
}while(read_length == 1024);
fclose(fr);
fclose(fw);
}
//5.读写一个mp4文件,两种方式 (1,1024)
void show5() //占用比实际内存多
{
FILE *fr = fopen("F:\银翼杀手.mp4","rb");
FILE *fw = fopen("F:\银翼杀手_new.mp4","wb");
char *buffer = (char *)malloc(1024*1024*500 * sizeof(char));
while (fread(buffer,1,1024*1024*500,fr) != 0)
{
fwrite(buffer,1,1024*1024*500,fw);
}
int res;
while ((res = fread(buffer,1,1024*1024*500,fr)) != 0)
{
fwrite(buffer,1,res,fw);
}
}
//.读写一个mp4文件,两种方式 (1024,1)
//1.读取(二进制) 2.写 3.定义 动态分配内存 4.判断 写入
//比实际空间少
void show10 ()
{
FILE *fr = fopen("F:\银翼杀手.mp4","rb");
FILE *fw = fopen("F:\银翼杀手_new.mp4","wb");
char *buffer = (char *)malloc(1024*1024*500 * sizeof(char));
while (fread(buffer,1024*1024*500,1,fr) != 0)
{
fwrite(buffer,1024*1024*500,1,fw);
}
int res;
while ((res = fread(buffer,1024*1024*500,1,fr)) != 0)
{
fwrite(buffer,res,1,fw);
}
}
//6.读取一个txt文件,筛选信息(模糊筛选,精确筛选)
void show6()
{
FILE*fr3 = fopen("F:\示例名单.txt","r");
char string[100] ;
while((fgets(string,101,fr3)) !=NULL)
{
if(strstr(string,"1996") != NULL )
{
printf("%s\n",string);
}
}
}
//7.把一个mp4文件拆分成三份
//1.先定义源文件指针 和 分割后文件指针
//2.分割的数目 文件长度
//3.判断
//4.拆分成三份 (拆分标志是什么?)
void show7_cut() //指针 注意for循环中传参 如果没有按fq[i]会error。 copy后为0kb
{
int res;
FILE *fp=fopen("F:\银翼杀手.mp4","rb");
FILE *fq[3];
fq[0]=fopen("F:\银翼杀手1.mp4","wb");
fq[1]=fopen("F:\银翼杀手2.mp4","wb");
fq[2]=fopen("F:\银翼杀手3.mp4","wb");
char *buffer = (char *)malloc((1024*1024*10)*sizeof(char));
for(int i =0;i< 3;i++)
{
res = fread(buffer,1,1024*1024*10,fp);
fwrite(buffer,1,res,fq[i]); //注意此处传参 fq[i] 数组
}
//fclose(fp); //switch函数的做法 仅作参考
//FILE *fq;
//int n=1;
//int res;
/*char *buffer=(char *)malloc(sizeof(char)*1024*1024*10);
while((res=fread(buffer,1,1024*1024*10,fp))!=0)
{
switch(n)
{
case 1:fq=fopen("F:\银翼杀手1.mp4","wb");break;
case 2:fq=fopen("F:\银翼杀手2.mp4","wb");break;
case 3:fq=fopen("F:\银翼杀手3.mp4","wb");break;
}
fwrite(buffer,1,res,fq);
n++;
fclose(fq);}*/
}
//8.把拆分后的mp4文件再合并
void show8_get() //数组
{
FILE * fp[3];
fp[0]= fopen("F:\银翼杀手1.mp4","rb");
fp[1] = fopen("F:\银翼杀手2.mp4","rb");
fp[2]= fopen("F:\银翼杀手3.mp4","rb");
FILE*fq=fopen("F:\银翼杀手_new.mp4","wb");
char *buffer = (char *)malloc((1024*1024*10)*sizeof(char));
int res;
for(int i =0;i< 3;i++)
{
res = fread(buffer,1,1024*1024*10,fp[i]);
fwrite(buffer,1,res,fq);
}
//fclose(fq);
}
int main()
{
// show1() ;
// show2();
//show3();
//show4();
//show9();
//show5();
//show10();
//show6();
//show7_cut();
// show8_get();
getchar();
return 0;
}#include<stdlib.h>
#include<stdio.h>
#includ