为函数分配的参数太多了?

时间:2014-03-12 02:47:29

标签: c visual-studio arguments

我定义了一个变量

wchar_t path[256];

然后我尝试获取此变量的strlen()

strlen(path);

错误是strlen()太多参数?

我不明白,我只向strlen()传递一个参数,路径很简单,大小为WORD的字符最多可以包含256个字符?

这是什么问题?我怎么能绕过它?

解决!

为了解决这个问题,我只需输入sPath wchar_t作为(const BYTE *),因此它允许我读取ASCII,它告诉strlen()函数在达到零时停止计数。现在工作。

2 个答案:

答案 0 :(得分:3)

您可以使用wcslen函数(在标题<wchar.h>中定义),该函数以const wchar_t *str为参数,而strlen则需要const char *str

答案 1 :(得分:0)

strlen()在提供的字符串中查找“\ 0”。这是一个空终止字符串。如果你传递一个未初始化的字符串,它可能看起来永远,因为谁知道你在那里放东西之前记忆中的什么。哪个继续意味着strlen()看​​起来直到它找到'\ 0',如果没有'\ 0'它将不会停止它将读取它可以的所有内存,应该产生无限循环。

尝试推杆:

char path[256] = {"test"};

传递,在这种情况下,auto auto null终止。