【发布时间】:2016-03-07 08:52:25
【问题描述】:
我必须从一个 4 字节长的设备中读取数据,这样我就声明了类似的数组
char data[4] = {0};
我会根据索引解析这个并保证在索引 3 处停止。
数据[0]..数据[3]
在这种情况下,NUL('\0') 没有空间。
我想知道这是否被认为是安全的,或者我应该将数组声明为
char data[5] = {0};
str* 系列函数中不会用到这个数组。
【问题讨论】:
-
这取决于你打算用
data做什么。某些函数需要最终的'\0':strlen,strchr,strcpy... 有些不需要:memcpy, ... -
多出一个字节会花费你吗?恕我直言,安全,防白痴,选择 5。
-
char data[5];然后memset( data, 0, sizeof data );。 -
@i486 - 怎么样更好?
-
“标准”?我想你拼错了 lame