在字符数组结束前使用\ 0的安全性

Mag*_*sch 5 c char

我正在为一个嵌入式系统编写驱动程序,该系统运行自定义版本的修改后的linux(它是一个手工扫描器).制造商提供自定义Eclipse Juno发行版,其中包含一些库和示例入站.

我从comport收到的输出是标准字符数组的形式.我使用数组中的单个字符来传达信息(错误ID和错误代码),如下所示:

if (tmp[i] == 250])
Run Code Online (Sandbox Code Playgroud)

其中tmp是char形式的字符数组,tmp[500];首先被初始化为0然后填充来自comport的输入.

我的问题是:

假设我遍历数组的每一部分,在数组结束之前的任何时候使用0(如何\0)都是安全的吗?假设我是:

  1. 不将其视为字符串(迭代并像int数组一样使用它)
  2. 知道将要在那里发生什么,以及它中间的这个随机\ 0应该是什么意思.

我问的原因是因为我有几个同事告诉我,我不应该\0在结束之前使用包含的字符数组,无论情况如何.

我这样做的代码目前按预期执行,但我不确定它是否会在以后引起问题.

重写它以避免这种行为将是一件非常重要的工作.

Som*_*ude 7

使用数组char作为小整数数组是完全正常的.请注意不要将它传递给任何需要"字符串"的函数.

如果你想更加明确它,并确保数组正在使用,unsigned char你可以使用uint8_t.