为什么读文件的小漏洞会影响CString类型变量的值?? 你的BYTE demDrt; 和CString变量的定义是不是相邻如果是那就可能是溢出造成CString变量被改写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调试版貌似所有的变量都会开辟新内存放,优化的release会在局部变量实用完之后回收内存。个人理解,不一定正确。我遇到过debug下面变量有值release下面为空的情况。 BYTE demDrt定义是在读文件的内部,CString变量的定义是在读文件之前;这样吧,我把OnInitDialog里大概的源代码贴出来吧: CDialog::OnInitDialog(); FILE *fp = fopen("log.txt","rt"); char lj[512]; fscanf(fp,"%s",lj); //获取*.prj文件路径 fclose(fp); CString prjpath,prjname; prjpath.Format("%s",lj); prjpath = prjpath.Left(prjpath.ReverseFind('\\')+1); //获取*.prj父窗口路径 char *fn = strrchr(lj,'\\'); fn++; char *f = strrchr(fn,'.'); strcpy(f,"\0"); prjname.Format("%s",fn); //获取prj文件文件名(不带后缀) CString datfile = prjpath+prjname+".dat"; CFileFind findfile; BOOL bFind = findfile.FindFile(datfile); if(bFind) { FILE *pf1 = fopen(datfile,"rt"); fscanf(pf1,...); ... BYTE demDrt; fscanf(pf1,"%d",&demDrt); //就是这里读完之后,prjname值为空 AfxMessageBox(prjname); ... fclose(pf1); UpdateData(FALSE); } CString cpdfile = prjpath+"product\\"+prjname+".dem.cpd"; bFind = findfile.FindFile(cpdfile); if(bFind) { FILE *pf2 = fopen(cpdfile,"rt"); fscanf(pf2,...); ... fclose(pf2); UpdateData(FALSE); } return TRUE; if(bFind) { FILE *pf2 = fopen(cpdfile,"rt"); ... fscanf(pf2,...); ... fclose(pf2); UpdateData(FALSE); } return TRUE; 怎么往第三台电脑上传输文件 如何用mfc实现模拟登陆某网站用户 帮忙看个插入SQL数据的错误,找了半天都没找到.在线等. 关于null的问题.....急!!! 问一下findwindowEx()的问题 关于结构体内隐含指针的问题,请众位高手指教,多谢! 怎么在MFC中建一个类,基类为CBitmap 急!!!在线等!请问EXEC在那个头文件中定义? 一个关于坐标映射的难点!当然会者不难! 哪儿去下APIspy or APIsnoop? VC++6.0的一个简单问题,要分请进来 VC关于FTP根目录的写法
这样吧,我把OnInitDialog里大概的源代码贴出来吧:
CDialog::OnInitDialog(); FILE *fp = fopen("log.txt","rt");
char lj[512];
fscanf(fp,"%s",lj); //获取*.prj文件路径
fclose(fp); CString prjpath,prjname;
prjpath.Format("%s",lj);
prjpath = prjpath.Left(prjpath.ReverseFind('\\')+1); //获取*.prj父窗口路径 char *fn = strrchr(lj,'\\');
fn++;
char *f = strrchr(fn,'.');
strcpy(f,"\0");
prjname.Format("%s",fn); //获取prj文件文件名(不带后缀)
CString datfile = prjpath+prjname+".dat";
CFileFind findfile;
BOOL bFind = findfile.FindFile(datfile);
if(bFind)
{
FILE *pf1 = fopen(datfile,"rt");
fscanf(pf1,...);
...
BYTE demDrt;
fscanf(pf1,"%d",&demDrt); //就是这里读完之后,prjname值为空
AfxMessageBox(prjname);
...
fclose(pf1); UpdateData(FALSE);
} CString cpdfile = prjpath+"product\\"+prjname+".dem.cpd";
bFind = findfile.FindFile(cpdfile);
if(bFind)
{
FILE *pf2 = fopen(cpdfile,"rt");
fscanf(pf2,...);
...
fclose(pf2);
UpdateData(FALSE);
}
return TRUE; if(bFind)
{
FILE *pf2 = fopen(cpdfile,"rt");
...
fscanf(pf2,...);
...
fclose(pf2);
UpdateData(FALSE);
}
return TRUE;