3.分析"...,...,..."类型的句子:
char *next_token,*token;
char seps[] = " ,/t/n";
char string1[] ="A string/tof ,,tokens/nand some more tokens";
char *token1=strtok_s( string1, seps, &next_token1);
while ((token1 != NULL))
{// Get next token:
if (token1 != NULL)
{
printf( " %s/n", token1 );
token1 = strtok_s( NULL, seps, &next_token1);
}
}
4."c://123//a.exe"
wchar_t* pEnd=wcsrchr(wcFileName,wcDot);
if(pEnd!=NULL) *pEnd=wcNull;
5.a.导出到硬盘中
void CLDRCapUI::OutputToDisk(CString strRoot)
{
DWORD dwAttrs = GetFileAttributes(strRoot);
if (dwAttrs==INVALID_FILE_ATTRIBUTES)
{
AfxMessageBox(_T("没有找到I盘"));
return;
}
char cMovie[256]={0};
char cPhoto[256]={0};
char cTo[256]={0};
::sprintf(cMovie,"%s",thePrefs.GetMovieHome());
::sprintf(cPhoto,"%s",thePrefs.GetPhotoHome());
::sprintf(cTo,"%sLRCap",strRoot);
char strTitle[] = "文件正在拷贝..."; //进度条标题
//如果没有发现该文件夹则创建此文件夹
CFileFind finder;
BOOL bFileFind= finder.FindFile(cTo);
if(!bFileFind)
CreateDirectory(cTo,NULL);
//将图片信息从数据库下到硬盘中
int iRepositoryType=thePrefs.GetRepositoryType();
if(0==iRepositoryType)//数据库存储
ExportProcessedRecord(cPhoto);
SHFILEOPSTRUCT sfo;
sfo.hwnd = NULL;
sfo.wFunc = FO_COPY;
sfo.pFrom =cMovie;
sfo.pTo = cTo;
sfo.fFlags = /*FOF_SILENT*/ FOF_ALLOWUNDO| FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
sfo.hNameMappings = NULL;
sfo.lpszProgressTitle = strTitle;
int hr = SHFileOperation(&sfo);
if(hr!=0)
{
AfxMessageBox(_T("导出影片失败"));
return;
}
sfo.pFrom =cPhoto;
hr = SHFileOperation(&sfo);
if(hr!=0)
{
AfxMessageBox(_T("导出影片成功,但是导出图片失败"));
return;
}
AfxMessageBox(_T("导出成功"));
}
b.
拷贝多个
比如在C盘上我有三个目录和三个文件,能否
用该函数一下子copy到d盘上去,是否还有其他
方法?
char pFrom[1024];
char *pNextBuf;
memset(pFrom, 0x00, 1024);
pNextBuf = pFrom
strcpy(pNextBuf, "C://autoexec.bat"); // 第一个文件
pNextBuf += strlen(pNextBuf)+1; // 空出一个字符'/0'
strcpy(pNextBuf, "c://winnt//hh.exe"); // 下一个文件
pNextBuf += strlen(pNextBuf)+1; // 空出一个字符'/0'
因为pFrom中的所有字符在开始时已全置为0,所以它肯定是以两个'/0'字符结尾的
6.一次只运行一个程序实例
下列两种方式都可以实现,建议采用第二种方式:
1、 if( FindWindow(NULL,"程序标题"))
exit(0);
2、BOOL CDemoTBarEApp::InstanceIsRun()
{
HANDLE m_hMutex;
m_hMutex = ::CreateMutex(NULL, TRUE, _T("YourApplication"));
ASSERT(m_hMutex);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
m_hMutex = NULL;
return TRUE;//实例已经运行
}
return FALSE;//实例未运行
}
7.怎样删除文件到回收站中
要删除文件到回收站,很简单。只要用SHFileOperation函数就行了,下面的代码我将为你演示了这一个函数的用法。当然你可以直接拷贝到你的项目中。
//删除文件到回收站中
//pszPath : 待删除的全路径文件名
//bDelete : TRUE 删除,不移到回收站,FALSE:移到回收站
一、 //返回 : TRUE 删除成功 FALSE 删除失败
BOOL CDelFileToRecycleDlg::Recycle(LPCTSTR pszPath, BOOL bDelete/*=FALSE*/)
{
SHFILEOPSTRUCT shDelFile;
memset(&shDelFile,0,sizeof(SHFILEOPSTRUCT));
shDelFile.fFlags |= FOF_SILENT; // don't report progress
shDelFile.fFlags |= FOF_NOERRORUI; // don't report errors
shDelFile.fFlags |= FOF_NOCONFIRMATION; // don't confirm delete
// Copy pathname to double-NULL-terminated string.
//
TCHAR buf[_MAX_PATH + 1]; // allow one more character
_tcscpy(buf, pszPath); // copy caller's pathname
buf[_tcslen(buf)+1]=0; // need two NULLs at end
// Set SHFILEOPSTRUCT params for delete operation
shDelFile.wFunc = FO_DELETE; // REQUIRED: delete operation
shDelFile.pFrom = buf; // REQUIRED: which file(s)
shDelFile.pTo = NULL; // MUST be NULL
if (bDelete)
{ // if delete requested..
shDelFile.fFlags &= ~FOF_ALLOWUNDO; // ..don't use Recycle Bin
}
else
{ // otherwise..
shDelFile.fFlags |= FOF_ALLOWUNDO; // ..send to Recycle Bin
}
return SHFileOperation(&shDelFile); // do it!
}
8.、内存泄漏检查
也许你已经知道,在C++和C语言中指针问题也就是内存申请与释放是一个令人头疼的事情,假如你申请了内存,但没有释放,并且你的程序需要长时间地运行,那么,系统的资源将逐渐减少,当系统的资源全部被用完时,系统将会崩溃。所以在开发程序的过程中一定要保证资源的完全释放。下面我们来介绍内存漏洞的检查。
示例如下:
// do your memory allocations and deallocations...
CString s = "This is a frame variable";
#ifdef _DEBUG
CMemoryState oldMemState, newMemState, diffMemState;
oldMemState.Checkpoint();
#endif
// the next object is a heap object
CString* p = new CString( "Smith Alan 581_0215" );
delete p;
p=NULL;
#ifdef _DEBUG
newMemState.Checkpoint();
BOOL b=diffMemState.Difference(oldMemState, newMemState);
if (b)
{
AfxMessageBox( "Memory leaked!/n" );
}
#endif
根据试验,由于我们无法释放掉象int CString char 申请的变量。只能释放指针型的变量。而检测内存时,照样会出现内存泄漏现象。所以,这种内存检测方式局限性还是很大。因为我们无法释放非指针型变量。