想要把后缀名更换掉,比如从.txt到.datCString s;
char s1[100],s2[100],s3[100];
CFileDialog* fdlg=new CFileDialog(TRUE,"txt",NULL,NULL,"Text Files (*.txt)|*.txt||");
if((fdlg->DoModal())!=IDOK){
delete fdlg;
return;
}
s=fdlg->GetPathName();
delete fdlg;sprintf(s1, "%s", s);strncpy(s2,s1,strlen(s1)-4);
s2[strlen(s1)-4]='\0';strcat(s2,".dat");
s2[strlen(s3)]='\0';LoadData(s2);
...
char s1[100],s2[100],s3[100];
CFileDialog* fdlg=new CFileDialog(TRUE,"txt",NULL,NULL,"Text Files (*.txt)|*.txt||");
if((fdlg->DoModal())!=IDOK){
delete fdlg;
return;
}
s=fdlg->GetPathName();
delete fdlg;sprintf(s1, "%s", s);strncpy(s2,s1,strlen(s1)-4);
s2[strlen(s1)-4]='\0';strcat(s2,".dat");
s2[strlen(s3)]='\0';LoadData(s2);
...
s+=".dat";
另外文件对话框临时使用 没必要new吧,不小心忘了delete很容易内存泄露。
临时使用尽量用局部变量啦!(注:如果用了新的SDK,并且定义了_WIN32_WINNT=0x0500以上,VC6的CFileDialog倒是会出错,解决方法就是用楼主的方法new/delete来解决)CString s;
CFileDialog dlg(TRUE,"txt",NULL,NULL,"Text Files (*.txt) ¦*.txt ¦ ¦");
if((dlg.DoModal())!=IDOK)
return;s = fdlg->GetPathName();
s = s.Left(s.GetLength() - 4);
s += ".dat";LoadData(s);
这样退出程序时候发生错误。不知道是哪里数组越界了。...
s=fdlg->GetPathName();
sprintf(s1, "%s", s);
strncpy(s2,s1,strlen(s1)-4);
s2[strlen(s1)-4]='\0';
strcat(s2,".dat");
s2[strlen(s1)]='\0';
...