【问题标题】:Expression: (L "String is not null terminated" & & 0)表达式:(L "字符串不是以空值结尾" & & 0)
【发布时间】:2015-01-26 20:37:08
【问题描述】:

我正在摆弄邮槽,但现在遇到了问题。 每当我尝试运行时,我都会在标题中收到错误消息,但我不知道应该如何修复它。 我想做的是“修复”邮槽的完整路径,但它似乎不像 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 的第二个参数的含义。
  • “缓冲区太小”可能就是它所说的那样

标签: c mailslot


【解决方案1】:

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

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

【讨论】:

  • 尝试 sizeof 代替,现在我得到一个“缓冲区太小” - 类似性质的错误。
  • 那么...fullName 够大吗?
  • 您可能想要打印strlen(name) 并验证strlen(name) + 14 < 50
  • fullName 确实应该足够大,考虑到 name 现在只包含 5 个字符。似乎解决了它。
猜你喜欢
  • 1970-01-01
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多