阅读背景:

Mohican_3/30 C语言 文件输入输出 的基本操作fopen fgets fputs strstr EOF

来源:互联网 
 
 
#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



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: