【发布时间】:2015-07-27 08:12:15
【问题描述】:
我有一个TCHAR 的数组,我在其中存储文件扩展名。
TCHAR *extens[] = { L".*", L".txt", L".bat" };
为了通过它,我正在计算它的长度。
int extCount = sizeof(extens) / sizeof(TCHAR);
但由于某种原因extCount的值是2。我认为问题是因为这是错误的计算方法,但是,如何正确计算这个数组中元素(“单词”)的数量?
UPD:我正在将此数组传递给函数:
void func(TCHAR *path, TCHAR **names, TCHAR **extensions);
当我在函数外计算这个数组长度时,它显示正确的数字,但在它里面总是工作错误(返回 2 或 1)。
UPD2: 我试图像这样重新声明数组:
TCHAR *extens[] = { L".txt", L".bat", L".txt", NULL };
现在在函数内部我正在做类似的事情:
TCHAR **p = extensions;
int extCount = 0;
while (*p != NULL)
{
extCount++;
*p++;
}
extCount = cnt;
wsprintf(temp, L"%d", cnt);
MessageBox(NULL, temp, temp, MB_OK);
它可以工作,但看起来它不是那么有效,因为要遍历两个数组,不是吗?
【问题讨论】:
-
你有一个
TCHAR*数组,而不是TCHAR。 -
你在期待什么?您将一个字符串放入数组中,因此长度为 1。
-
@ElderBug,不管有多少元素,都不总是1
-
@Ivan Petrov
extCount对我来说是 3。您是否重新构建了程序? -
在需要时使用
char,在需要时使用wchar_t。在编译时在它们之间切换是零意义的。