c - 表达式 : (L "String is not null terminated" & & 0)

标签 c mailslot

我正在摆弄邮筒,现在我遇到了一个问题。 每当我尝试运行时,我都会在标题中收到错误消息,但我不知道应该如何修复它。 我想做的是“修复”邮槽的完整路径,但它似乎不喜欢 strcat_s-part。

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

Imgur link to error

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

最佳答案

请参阅有关 strcat_s 的文档.它说第二个参数应该是目标缓冲区的大小。当您传递 strlen(fullName) 时,没有终止 \0 的空间。

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

关于c - 表达式 : (L "String is not null terminated" & & 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158307/

相关文章:

C 皮质-M4 : How to access uint8_t data sent by UART (vcom) as int32_t

c - 在 C 中使用 3D-Array 时出现内存读取异常

delphi - "Access Denied"在 Windows 服务程序中的 Mailslot 上写入

无法通过邮槽发送 wchar_t 数组

在 C 中创建一个处理重定向和管道的 shell

c - 使用 C 中的套接字通过多个客户端传输文件时出现格式错误

c - 获取链表的长度

尝试从邮槽读取时 C Readfile 错误 87

c - 为什么整数类型的发送顺序是颠倒的?

delphi - 邮槽永远阻塞