C 表达式:(L“字符串不是以null结尾的”0)
我在摆弄邮箱,现在遇到了一个问题。 每当我尝试运行时,我都会在标题中看到错误消息,但我不知道该如何着手修复它。 我试图做的是“修复”邮箱的完整路径,但它似乎不像strcat_-partC 表达式:(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
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个字符。这似乎解决了问题。