请帮我看看如下代码,为何老是提示文件未找到!!!

半点闲 2004-10-29 03:28:44
操作系统:win2k
开发工具:VC6
语言:C
// 以下是全局变量。
TCHAR szPath[MAX_PATH + 1]; // 获取的当前路径名。
TCHAR szUpFilesList[] = TEXT("UpFilesList.txt"); // 文件名。
TCHAR szPathFile[100]; // 合并路径与文件名。
int intFileZt; // 获取文件状态。

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// 省掉不相关代码若干......
TCHAR szBuffer[100]; // 格式化后的字符缓冲区。
int iLeng; // 字符长度。
static HANDLE hFind; // 查找文件返回值句柄。
static WIN32_FIND_DATA FindFileData;
........
switch (message)
{
case WM_CREATE:
..........
.........
// 获取当前路径。
if ( (GetCurrentDirectory(MAX_PATH + 1, szPath)) !=0 )
{
// 合并字符串。
iLeng = wsprintf(szBuffer,
TEXT("%s\\%s"),szPath,szUpFilesList);
lstrcpyn(szPathFile, szBuffer, iLeng);

hFind = FindFirstFile(szPathFile, &FindFileData);

if (hFind == INVALID_HANDLE_VALUE)
{
intFileZt = 0; // 赋定位文件状态值。
FindClose(hFind); //关闭查找句柄。
}
else
{
intFileZt = 1;
FindClose(hFind);//关闭查找句柄。
}
}
else
{
intFileZt = 2;
}
return 0;
case WM_PAINT:
switch (intFileZt) // 定位文件状态。
{
case 0:
hdc = BeginPaint(hwnd, &ps);
// 格式化字符串。
iLeng = wsprintf(szBuffer,
TEXT("当前路径下:%s文件未找到!"),szPathFile);
TextOut(hdc, cxChar, cyChar, szBuffer, iLeng);
EndPaint(hwnd, &ps);
break;
case 1:
hdc = BeginPaint(hwnd, &ps);
// 格式化字符串。
iLeng = wsprintf(szBuffer,
TEXT("文件找到了!%s"),FindFileData.cFileName );
TextOut(hdc, cxChar, cyChar, szBuffer, iLeng);
EndPaint(hwnd, &ps);
break;
case 2:
hdc = BeginPaint(hwnd, &ps);
iLeng = wsprintf(szBuffer, TEXT("致命错误911!"));
TextOut(hdc, cxChar, cyChar, szBuffer, iLeng);
EndPaint(hwnd, &ps);
break;
default:
hdc = BeginPaint(hwnd, &ps);
iLeng = wsprintf(szBuffer, TEXT("致命错误path!"));
TextOut(hdc, cxChar, cyChar, szBuffer, iLeng);
EndPaint(hwnd, &ps);
break;
}

return 0;

case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}

程序执行后~~~~不管当前目录中有没有UpFilesList.txt这个文件,,总是提示文件未找到。。。请大家帮我看看我错在那里~~~~~~~~~~~~~
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfjj 2004-10-29
  • 打赏
  • 举报
回复
^_^
解决了就好!
半点闲 2004-10-29
  • 打赏
  • 举报
回复
原因找到了,原来是少了一个字符。
代码改为如下:
iLeng = wsprintf(szBuffer,
TEXT("%s\\%s"),szPath,szUpFilesList);
lstrcpyn(szPathFile, szBuffer, iLeng + 1);

iLeng + 1后问题解决,但不知道为何会少接收一个字符。
半点闲 2004-10-29
  • 打赏
  • 举报
回复
我已经输出合并后的字符串了啊~~~
// 合并字符串。
iLeng = wsprintf(szBuffer,
TEXT("%s\\%s"),szPath,szUpFilesList); // 把两个字符串合并到szBuffer,并获取合并后的字符串长度。
lstrcpyn(szPathFile, szBuffer, iLeng); // 通过字符串拷贝函数并指定拷贝字符个数.
zhangfjj 2004-10-29
  • 打赏
  • 举报
回复
// 获取当前路径。
if ( (GetCurrentDirectory(MAX_PATH + 1, szPath)) !=0 )
{
// 合并字符串。
iLeng = wsprintf(szBuffer,
TEXT("%s\\%s"),szPath,szUpFilesList);
//在这里,建议输出合并后的字符串,看是否正确
jitian81411 2004-10-29
  • 打赏
  • 举报
回复
太长了
帮顶一下

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧