char * 转 TCHAR *的函数有关问题
char * 转 TCHAR *的函数问题
网上找了一个 char *转 TCHAR *的函数:
调用如下:
按照道理来说,因为前面的字符数组的长度要大于后面的,所以在复制的时候会截断吧?但是在调试的时候,发现 tc 里面的内容也成为了 "char" 为什么呢?
------解决方案--------------------
你没检查越界啊 自然就这样了把
------解决方案--------------------
你用内存查看看看,是不是双字节,不就知道了。
------解决方案--------------------
楼主参考我刚回复你另一个帖子中的代码是如何处理越界的。
------解决方案--------------------
至于越界不报错的原因:
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
------解决方案--------------------
在定义了unicode时,char *为TCHAR *,应该说char *转w_chart *
网上找了一个 char *转 TCHAR *的函数:
void ConvertCharToTchar ( char * Src_char, TCHAR * Des_tchar )
{
if ( Src_char == NULL || Des_tchar == NULL )
{
return ;
}
int iLength ;
iLength = MultiByteToWideChar (CP_ACP, 0, Src_char, strlen (Src_char) + 1, NULL, 0) ;
MultiByteToWideChar (CP_ACP, 0, Src_char, strlen (Src_char) + 1, Des_tchar, iLength) ;
}
调用如下:
char c[6] = "char";
TCHAR tc[2] ;
ConvertCharToTchar ( c, tc );
按照道理来说,因为前面的字符数组的长度要大于后面的,所以在复制的时候会截断吧?但是在调试的时候,发现 tc 里面的内容也成为了 "char" 为什么呢?
------解决方案--------------------
你没检查越界啊 自然就这样了把
------解决方案--------------------
你用内存查看看看,是不是双字节,不就知道了。
------解决方案--------------------
楼主参考我刚回复你另一个帖子中的代码是如何处理越界的。
------解决方案--------------------
至于越界不报错的原因:
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
------解决方案--------------------
在定义了unicode时,char *为TCHAR *,应该说char *转w_chart *