关于zeromemory函数 与ascii unicode的bug与困惑
来源:互联网 发布:unity3d deltatime 编辑:程序博客网 时间:2024/06/06 09:36
//程序选择的编码方式unicode 但是由于程序的一些函数需要调用ascii函数 只能共同调用
#include <windows.h>
#include <iostream>
using namespace std;
//查找文件辅助结构
struct fileName
{
char Fname[512];
fileName *pNext;
};
int main()
{
char *source = new char[512];
char *str = "weisong\\";
strcpy(source, str);
char *dest = new char[512];
fileName *pHead = dedaowenjianliebiao(source);
while(pHead->pNext)
{
strcpy(dest, source);
strcat(dest, pHead->Fname);
cout << dest << endl;
cout << pHead->Fname << endl;
pHead = pHead->pNext;
}
return 0;
}
fileName *dedaowenjianliebiao(char *path)
{
fileName *pHead = NULL;
WIN32_FIND_DATAA FD;
ZeroMemory(&FD,sizeof(WIN32_FIND_DATA)); //程序导致崩溃的地点 单步调试发现执行完此步path == null
HANDLE Hand;
char FilePath[512];
ZeroMemory(FilePath, 512);
fileName *p = new fileName;
ZeroMemory(p, sizeof(fileName));
fileName *pTemp = pHead = p;
strcpy(FilePath, path); //将路径复制给FilePath
if (FilePath[strlen(FilePath)-1] != '//') //判断最后是不是"/"
{
strcat(FilePath,"//*"); //要加/*才能浏览本文件夹,注意双引号与单引号
}
Hand = FindFirstFileA(FilePath, &FD);
if (Hand == INVALID_HANDLE_VALUE)
{
return NULL; //按照路径打开失败,则结束
}
else
{
while(true)
{
if (FindNextFileA(Hand, &FD))
{
//创建链表保存文件名
strcpy(p->Fname,FD.cFileName);
p = new fileName;
ZeroMemory(p,sizeof(fileName));
pTemp->pNext = p;
pTemp = p;
}
else
{
break;
}
}
}
FindClose(Hand);
return pHead;
}
以上问题让人很困惑 后来发现问题出现在以下地方
WIN32_FIND_DATAA FD;
ZeroMemory(&FD,sizeof(WIN32_FIND_DATA));
WIN32_FIND_DATAA的大小是WIN32_FIND_DATA它的一半 所以在清空的时候将path一起清空
导致复制的过程都失败了 程序崩溃了
- 关于zeromemory函数 与ascii unicode的bug与困惑
- Unicode与ASCII的转换
- UNICODE与ASCII的区别
- ASCII与unicode的转换
- ASCII与UNICODE的区别
- UNICODE与ASCII的区别
- UNICODE与ASCII的区别
- UNICODE与ASCII的区别
- 关于ASCII、Unicode、Char、NChar之间的联系与区别
- 归纳Unicode与ASCII通用类型函数
- ASCII与UNICODE
- ASCII与Unicode
- ASCII与unicode
- ASCII与unicode
- AscII与Unicode编码
- Unicode与ASCII
- UNICODE与ASCII字符的转换
- ANSI,ASCII,Unicode的区别与联系
- 图的深度、广度优先搜索(JAVA实现)
- Openssl Des-2
- oracle管理权限
- windows驱动入门,DDK中例子的实用方法
- Bash Here Documents
- 关于zeromemory函数 与ascii unicode的bug与困惑
- vc sqlite3.lib
- 开发就像做家务活越干越多
- matlab for linux(下载与安装)
- oracle闪回
- 数学运算后缀表达式转换成中缀表达式
- Algorithm : 费式数列
- testtt
- C标准和C++标准字符串说明