我正在为运行定制版本的修改后的Linux的嵌入式系统编写驱动程序(它是一个手持扫描仪)。制造商提供了一个自定义的Eclipse Juno发行版,其中包含一些库和示例。
我从串口接收到的输出以标准字符数组的形式呈现。我正在使用数组中的单个字符传递信息(错误ID和错误代码),如下所示:
if (tmp[i] == 250])
这里的tmp
是一个字符数组,形式为char tmp[500];
,首先初始化为0
,然后用来存储来自串口的输入。
我的问题是:
假设我要遍历数组中的每个元素,在数组末尾之前的任何位置使用0
(例如\0
),是否安全?假设我:
- 不将其视为字符串(通过遍历并像
int
数组一样使用它) - 知道其中会有什么内容以及在其中间出现的随机
\0
应该表示什么。
我之所以问这个问题,是因为我有几个同事告诉我,无论情况如何,都不应该在字符数组中包含\0
,即使在末尾之前也不行。
目前我的代码可以正常运行,但我不确定它是否会在以后引起问题。
重写代码以避免这种行为将是一个不小的工作量。
strcpy
、strcat
等),就应该没有问题。 - Mr. Etmp[i] == 250
这样的语句有关。如果 tmp 是一个 char 类型,那么它是有符号还是无符号是未定义的。如果它是有符号的,那么这个语句永远不可能成立,因为它必须在 -128 和 127 之间。 - Tom Tannersigned char
或unsigned char
,而不是char
,以表明它不应被视为字符串。 - pmg