为什么读文件的小漏洞会影响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里有没有像C#的DataGridView这样的东西 线程读写int USB的应用程序是怎么开发的?能用VC++吗? 有关Richedit中的换行问题 各位兄弟,小弟近段时间要搞图象编程,能否推荐几本比较好的书籍,先谢了! CString如何转化成十六进制并低字节在前,高字节在后??? 加急!!!!!在Vc6.0的winsock通讯程序中,服务器端的程序如何得到客户端ip和主机名。 希望讨论一个问题:如何实现技术上和业务上的“原子”操作?? 关于SAFEARRAY数组的释放问题 CListCtrl控件的问题 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;