看下面一段程序
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t aa[100],bb[200],cc[300];
int len = wcslen(aa);
std::cout<<len<<std::endl;
len = wcslen(bb);
std::cout<<len<<std::endl;
len = wcslen(cc);
std::cout<<len<<std::endl;
system("pause");
return 0;
}
运行结果为:
109
313
617
为何输出结果和预想中的不一样呢,其实原因在于你未初始化字符数组,这种情况下会造成数组在末位往后第n位初始化为0,同时数组长度越大,n的值也越大,根据编译器的不同,n的值也有变化。strlen也有同样的问题。