环境是VC++2005+Mobile5
for(i=0;i<340;i++)
{
sprintf(cFile,"map%d.dat",i);
CreateMap(cFile);
}
void CreateMap(LPSTR lpszFileName)
{
FILE *fpmap = NULL;
fpmap=SaveFile(lpszFileName);
//....
CloseFile(fpmap);
}
FILE *SaveFile(LPSTR lpszFileName)
{
fp = fopen(lpszFileName, "wb");
if (fp == NULL)
{
TerminateOnError("不能写到文件: %s!\n",lpszFileName);
}
return fp;
}
void CloseFile(FILE *fp)
{
fclose(fp);fp = NULL;
}
问题是循环不到头fopen就不能写到文件,不定哪一个,难道说有什么限制,怎么解决呀
返回错误编号5文件访问被拒绝,另外我发现CloseFile(FILE *fp)函数内关闭文件的话,函数执行后fp还不为空,直接调用fclose(fp);fp = NULL;或者CloseFile(FILE **fp),fp为空。
我在CreateMap中直接调用fopen,fclose就不存在文件访问被拒绝了,难道这种用法有问题??求解
新的问题:CreateMap中需要用到LPBYTE buf = NULL;buf = (LPBYTE)malloc(iSize);....
fwrite(buf, iFileLen, 1, fp);free(p);p=NULL;不出现文件访问被拒绝后,再建到200左右个文件时提示buf分配内存失败??在用过后我释放了呀,难道说频繁malloc也会出错???