【问题标题】:Is NUL declared by codeblocks? [duplicate]NUL 是由代码块声明的吗? [复制]
【发布时间】:2015-01-24 11:11:43
【问题描述】:
char word[5]={"fayed"};

word[1]=NUL;

printf("%s",word);

它显示错误...和NUL 未声明。

【问题讨论】:

  • 不,NUL 不是一个东西。
  • 这是一个非常常见的#define for '\0'。可能是为了帮助程序员区分 0 和 ASCII '0'。它不是标准的,最好不要依赖它。
  • Codeblocks 不是编译器。
  • 是的,它不是。我想说一下这个 IDE 包含的库。
  • 它只是一个 IDE,您使用的标头不是 Codeblocks 的一部分,它们是几个不同库的一部分。如果您使用的是 Windows 版本的 Codeblocks,它们会作为 MinGW 的一部分附带,在其他系统中,它们要么随系统一起提供,要么在您安装新库时安装。这不是迂腐,重要的是你知道,IDE 在这个问题上是无关紧要的。

标签: c null nul


【解决方案1】:

您指的是NUL,ASCII 字符。

C 标准不要求对字符进行 ASCII 编码,但它确实使用字符值 0 来终止字符串(ASCII 中 NUL 的一种常见含义)。

只需使用0:

word[1]=0;

并确保不要将其与字符 '0' 混淆。

【讨论】:

  • 我觉得分配给char时使用'\0'而不是0更好。
  • @akj 我也是。 “使用 '\0' 而不是 0 来表示字符串末尾的空字节。”,Kernighan & Pike 在编程实践中
【解决方案2】:

不,没有称为NUL 的标准标识符。如果您想null-terminate 一个字符串,请使用0'\0'

为了完整起见,值得注意的是null pointer 拼写为NULL。见If NULL and 0 are equivalent as null pointer constants, which should I use?

【讨论】:

  • 我很确定问题是关于 NUL(ASCII 字符)以及任何对 NULL 的引用,指针都是相切的。
  • @PascalCuoq:当然。 NULL 是为了完整性。我已经改写了答案以使其清楚。
猜你喜欢
  • 1970-01-01
  • 2015-02-10
  • 2020-09-30
  • 2019-03-18
  • 2023-01-12
  • 1970-01-01
  • 2014-01-10
  • 2011-01-29
相关资源
最近更新 更多