FILE* pFile;
pFile = fopen("1.txt","r");
char* pBuf;
fseek(pFile,0,SEEK_END);
int len = ftell(pFile);
rewind(pFile);
pBuf = new char[len];//在堆中分配内存
memset(pBuf,0,len);//初始化堆中分配的内存
fread(pBuf,1,len,pFile);//读取数据
fclose(pFile);
MessageBox(pBuf);上面是一个简单读取文件的代码。发现memset函数不能初始化堆中分配的内存。就是MessageBox的显示中还是有乱码。
求解释????
pFile = fopen("1.txt","r");
char* pBuf;
fseek(pFile,0,SEEK_END);
int len = ftell(pFile);
rewind(pFile);
pBuf = new char[len];//在堆中分配内存
memset(pBuf,0,len);//初始化堆中分配的内存
fread(pBuf,1,len,pFile);//读取数据
fclose(pFile);
MessageBox(pBuf);上面是一个简单读取文件的代码。发现memset函数不能初始化堆中分配的内存。就是MessageBox的显示中还是有乱码。
求解释????
memset(pBuf,0,len);//初始化堆中分配的内存
改为
pBuf = new char[len+1];//在堆中分配内存
memset(pBuf,0,len+1);//初始化堆中分配的内存
你的连续两个操作
memset(pBuf,0,len);//初始化堆中分配的内存
fread(pBuf,1,len,pFile);//读取数据
pBuf被填充了
ftell返回的长度以后,new多分配一个字节数据就可以了
MessageBox(pBuf);
pBuf = new char[len];//在堆中分配内存,分配的是len,但是实际占用的内存是len+1,
所以,下面是
memset(pBuf,0,len+1);//初始化堆中分配的内存