c 理解malloc() realloc()

1.

#include 
#include 
#include 
#include 
#include 
#include 

int main(void){
	FILE *f=fopen("/home/wzpc/c/1.mp3","rb");
	if(f==NULL){
		puts("file error\n");
	}
	char c[1000];
	char *p=malloc(sizeof(char));
	int t=0;
	
    while(!feof(f)){
		memset(c,0,1000);            
		fread(c,1000,1,f);           //与fgetc() 相同,读文件指针自动累加
    	p=realloc(p,1000*(t+1));     //增加动态内存
    	memcpy(&p[t*1000],c,1000);   //拷贝,一定要注意指定开始拷贝的地址
		t++;	
    }	
	printf("%s\n",p);
	free(p);
	return 0;	
}

2

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(void){
	FILE *f=fopen("/home/wzpc/c/1.mp4","rb");
	if(f==NULL){
		puts("file error\n");
	}
	long int n=0;
	while(!feof(f)){
		fgetc(f);
		n++;
	}
	rewind(f);
	char *c=calloc(n,sizeof(char));
	fread(c,n,1,f);
	printf("%s\n","over");
	free(c);
	
	return 0;
}

第二种方法是读文件到数组的最快方法,第一种慢。

你可能感兴趣的:(c语言,算法,开发语言)