【问题标题】:"Unterminated string" when including quote in string literal on Turbo C compiler在 Turbo C 编译器的字符串文字中包含引号时出现“未终止的字符串”
【发布时间】:2014-04-02 09:08:02
【问题描述】:

我的程序中有这个,它显示一个错误说:未终止的字符串。

char Tok[63][63] = {"%%##","\""};

还有其他方法可以将双引号声明为字符串吗?

【问题讨论】:

  • 您使用的是哪个平台和编译器?
  • 这解释了很多,因为这在 clang 和 clang++ 3.3 上都很好。如果您可以选择更差的 C 编译器,我迫不及待地想看看如何。最后一个 Turbo C (2.0) 是在 25 年前发布的。
  • 这是一个项目的要求,所以我需要坚持编译器。
  • 用十六进制等效值(字节值)替换它 - 例如 char(0x22) 或类似的。
  • 感谢 prabindh 回答了我的问题。

标签: c string character turbo-c


【解决方案1】:

这是 Turbo C 中的一个错误。我已经尝试过:

char Tok[63][63] = { "%%##", "\"" };

int
main (int argc, char **argv)
{
  return 0;
};

在 gcc 上,在普通模式、C89 模式和带有-Wall 的 C99 模式下,它编译时没有错误 (*)。我还手动查看了字符串,它不可能被终止。

我建议您在字符串文字中使用八进制,即

char Tok[63][63] = { "%%##", "\042" };

看看 Turbo C 是否喜欢。

(*) = NB return 0 不是 main() 的好习惯 - 只是为了确保代码以最简单的方式编译而没有警告

【讨论】:

  • 这比上面的答案更好,因为您可以向它添加一个新元素到数组中,而不会出错。除了双引号的八进制值为042。
  • 糟糕 - 十六进制/八进制 thinko - 已修复。
猜你喜欢
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多