C 表达式:(L“字符串不是以null结尾的”0)

C 表达式:(L“字符串不是以null结尾的”0),c,mailslot,C,Mailslot,我在摆弄邮箱,现在遇到了一个问题。 每当我尝试运行时,我都会在标题中看到错误消息,但我不知道该如何着手修复它。 我试图做的是“修复”邮箱的完整路径,但它似乎不像strcat_-part HANDLE mailslotCreate (char *name) { char fullName[50] = "\\\\.\\mailslot\\"; strcat_s(fullName, strlen(fullName), name); return CreateMailslot(f

我在摆弄邮箱,现在遇到了一个问题。 每当我尝试运行时,我都会在标题中看到错误消息,但我不知道该如何着手修复它。 我试图做的是“修复”邮箱的完整路径,但它似乎不像strcat_-part

HANDLE mailslotCreate (char *name) {
    char fullName[50] = "\\\\.\\mailslot\\";
    strcat_s(fullName, strlen(fullName), name);
    return CreateMailslot(fullName, 0, TIME_OUT, NULL);
}

编辑:将strlen更改为sizeof只会将错误改为“缓冲区大小太小”。

请参阅上的文档。它说第二个参数应该是目标缓冲区的大小。当您经过strlen(全名)时,没有终止
\0
的空间


将其更改为
sizeof(fullName)
,您的错误应该会消失。

检查手册,了解strcat的第二个参数的含义。“Buffer size too small”可能正是它所说的sizeof,现在我得到了一个“Buffer is too small”-性质类似的错误。因此。。。
fullName
足够大吗?您可能需要打印
strlen(name)
并验证
strlen(name)+14<50
fullName确实足够大,因为此时名称仅包含5个字符。这似乎解决了问题。