| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 661 人关注过本帖
标题:会win32 SDK的朋友进来一下,同样也是C语言
只看楼主 加入收藏
bianfeng
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
会win32 SDK的朋友进来一下,同样也是C语言
程序代码:
TCHAR  szFilePath[MAX_PATH]; 
GetModuleFileName(NULL,szFilePath,MAX_PATH);    //获取执行文件绝对路径
//LPTSTR szCmp = _T("\\");
for(int i = lstrlen(szFilePath); i >= 0; i--)
{
   TCHAR temp = szFilePath[i];
   int iCMPResult = lstrcmp(&temp,_T("\\"));
   if(!iCMPResult)
  {
    szFilePath[i] = 0;
    break;
  }
}
以上的功能是从全路径名中删除最后的文件名,如:d:\pp\qq.exe,处理结果是d:\pp\,就是把后面的qq.exe去掉.不是MFC,没有CString类,我跟踪了,不能比较啊


[ 本帖最后由 bianfeng 于 2009-8-30 16:44 编辑 ]
搜索更多相关主题的帖子: SDK C语言 朋友 
2009-08-30 16:42
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
TCHAR temp = szFilePath[i]; 虽然你声明的是一个字节的变量,但是因为堆栈指针的关系会在堆栈上为你保留4个字节的空间。而debug的VC编译器为了防止堆栈溢出,会将其填充为CCCCCCCC.
所以你的比较字符串就是 xxCCCCCC(xx 就是temp的值)和5C('\')在做比较,所以永远不可能相等。
如下即可:
程序代码:
TCHAR  szFilePath[MAX_PATH]; 
GetModuleFileName(NULL,szFilePath,MAX_PATH);    //获取执行文件绝对路径
//LPTSTR szCmp = _T("\\");
for(int i = lstrlen(szFilePath); i >= 0; i--)
{
   if(szFilePath[i] == (TCHAR)'\\')
   {
      szFilePath[i] = (TCHAR)'\0';
      break;
   }
}


[ 本帖最后由 东海一鱼 于 2009-8-30 19:29 编辑 ]

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-08-30 18:42
快速回复:会win32 SDK的朋友进来一下,同样也是C语言
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016849 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved