首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

不知道这是什么原因?该怎么处理

2012-03-24 
不知道这是什么原因?TCHAR tString[1]int m lstrlen(tString)int n wcslen(tString)编译得到m 33

不知道这是什么原因?
TCHAR tString[1];
int m = lstrlen(tString);
int n = wcslen(tString);

  编译得到m = 33;// 有时是23
  n = 21。// 有时是11

TCHAR tString[2];
int m = lstrlen(tString);
int n = wcslen(tString);

  编译得到m = 27;结果也不确定
  n = 15。结果也不确定

反正每次改变tString的字符串长度,每次得到的m和n值都不一样。

这是什么意思? 什么原因?

我的系统是win 7 64位专业版




[解决办法]
字符串初始化一下
[解决办法]
没有初始化就计算长度?
[解决办法]
倒,你的tString根本就没有初始化,这时tString是个野指针,而strlen一类的字符串函数是读到NULL字符返回长度的,你这样取长度没有意义,如果非要这时使用字符串函数的话,先清空内存,ZeroMemory(tString, 长度);,或者当长度是1时tString[0] = NULL;,长度是1也没必要用数组,就是单个字符

热点排行