fread fwrite 读写文本文件(MFC 应用程序)

 /*
	FILE * stream;
	char buf[20];
	 memset(buf,0,20); //初始化内出

	if((stream=fopen("G:\\123.txt","r"))==NULL)
	{
       TRACE("打开文件失败!");
	   return;
	}
    TRACE("read finish");
	fseek(stream,0,0);
	fread(buf,1,20,stream);
    fclose(stream);
		TRACE("%s",buf);*/
		     //第一种方法  必须 初始化内存!!!!!!!要不然为烫烫烫烫烫 烫烫烫  乱码   
	/*
	FILE * stream;
	char buf[20];
	memset(buf,0,20); //初始化内出

	if((stream=fopen("G:\\123.txt","r"))==NULL)
	{
       TRACE("打开文件失败!");
	   return;
	}
    TRACE("read finish");
	fseek(stream,0,0);
//	fread(buf,1,20,stream);
	int i=0;
	while(!feof(stream))
	{
		fread(&buf[i],sizeof(char),1,stream);
	i++;
	}   
    fclose(stream);
	TRACE("%s",buf);
    //************第二种 一个一个读 
	*/

	

//FILE* pFile=fopen("G:\\123.txt","r");//这里加载一个PE文件    
//fseek(pFile, 0, SEEK_END);   
//int len = ftell(pFile);   
//char* szBuf=new char[len+1]; 
////memset(szBuf,0,len);  
//fseek(pFile, 0, SEEK_SET);  
//int iRead=fread(szBuf,1,len,pFile);
//szBuf[len]=0;
// fclose(pFile);
//	TRACE("%s",szBuf);
//	//delete szBuf;//释放内存
// TRACE("%d",iRead);
	  //**************************************第三种方法
                没有问题 但是 当有换行时  最后有一个 “屯” 字符不知道为什么?单行是正确的 


FILE *fp;
int flen;
char *p;
if((fp=fopen("G:\\A5.txt","r"))==NULL)
{
	return ;

}
fseek(fp,0,SEEK_END);
flen=ftell(fp);
p=(char*)malloc(flen+1);
if(p==NULL)
{
    fclose(fp);

}
fseek(fp,0,SEEK_SET);
fread(p,flen,1,fp);
p[flen]=0;
TRACE("%s",p);
fclose(fp);
//free(p);
  //**************************第四种 方法 

 FILE *wfile;
 wfile=fopen("G:\\A56.txt","wt+");
 if(wfile==NULL)
 {
   TRACE("create file error");
   return;
 }
 int num=fwrite(p,1,strlen(p),wfile);
 fclose(wfile);

 int size=strlen(p);
 TRACE("大小是:\n");
 TRACE("%d",size);

 TRACE("写入的数量\n");
 TRACE("%d",num);

}

最后 写文件 必须是   wfile=fopen("G:\\A56.txt","wt+");  中"wt+"形式的文本文件!不能是二进制文件

不知道 第三种 读的时候 有多行时,最后一个字符为"屯”  为什么是 啊,单行正确

原文地址:https://www.cnblogs.com/marky/p/2496827.html