_tcsstr:字符串1在字符串2中首次出现的位置,未出现返回NULL值;
_tcsrchr:字符1 在字符串2中首次出现的位置,未出现返回NULL值
TCHAR字符串操作函数:
_tcslen(str) 获得字符串长度
_tcsrchr(str, L'\\') 反向搜索获得最后一个TCHAR的位置
_stprintf(TCHAR *buffer,const TCHAR *format [,argument] ... )获得一个格式化字符串
_tcsdup 给一个指针分配源字符串大小的内存并从源字符串copy值
_tcstok 按标记将字符串拆分
tcscpy 拷贝字符串
(_TCSRCHR(SZFILEPATH, _T('\\')))[1] = 0
char szFilePath[MAX_PATH];
GetModuleFileName(NULL, szFilePath, MAX_PATH);
(_tcsrchr(szFilePath, _T('\\')))[1] = 0;
这是一段获得程序当前目录的一段代码
这段代码很简单,唯一有点难度的就是最后一句(_tcsrchr(szFilePath, _T('\\')))[1] = 0;
其实这句可分解为两句话
char *ch = _tcsrchr(szFilePath, _T('\\'));查找最后一个\出现的位置,并返回\后面的字符(包括\)
ch[1] = 0;//NULL 通过操作来操作szFilePath = 将szFilePath截断,截断最后一个\后面的字符(不包括\)
#include <tchar.h>
TCHAR* _strstr(const TCHAR *s1, const TCHAR *s2)
{
if (*s2 == '\0') /*如果s2为空,则返回s1*/
return ((TCHAR *)s1);
for (; s1 != '\0'; ++s1) /*每次后移s1的位置,在新的位置进行下一次匹配*/
{
const TCHAR *sc1, *sc2;
while((*s1 != *s2)&&(*s1 != '\0'))
++s1; /*在s1中找到和s2第一个字符匹配的位置*/
if (*s1 == '\0') /*如果找不到,说明s1现在的位置不匹配,退出循环进行下一次匹配*/
break;
else /*如果找到和s2第一个字符匹配的位置,开始逐个匹配s2后面的字符*/
for (sc1 = s1, sc2 = s2; sc1 !='\0'; ++sc1,++sc2)
{
if (*sc2 == '\0') /*如果匹配完毕,返回s1此时的位置*/
return ((TCHAR *)s1);
else if (*sc1 != *sc2) /*如果后面有一个字符不匹配,说明s1现在的位置不匹配,退出循环进行下一次匹配*/
break;
}
}
return (NULL) ;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)