[英]Why is the array not accepting a null terminator?
我试图在此数组的末尾插入一个空终止符。 我该如何解决?
int cool_array[10] = {0};
int i = 0;
while (i < 5) {
cool_array[i] = 5;
i++;
}
cool_array[i] = {'\0'} // this is where the problem is. I get an error.
错误:
error: expected expression
legal_cards[legal_counter] = {'\0'};
^
1 error generated.
首先 , this( integer )数组末尾的空终止符没有任何意义。 如果其char array
应为null终止。
cool_array[i] = '\\0';
不需要,因为您最初已经如下初始化cool_array
int cool_array[10] = {0}; /* here itself cool_array all elements initialized with zero */
其次 ,如果cool_array
是像char cool_array[10]
这样的char数组,则应该是
cool_array[i] = '\0'; /* make sure i value is within range i.e 0 to 9 as you declare cool_array[10] */
代替
cool_array[i] = {'\0'};
正如@achai所指出的,我们通常保留术语“空终止符”以用于包含字符串数据的char
数组。 尽管如此,在其他类型的数组中使用值0作为数据结束标记也没有内在的错误,但是这样的约定绝不是通用的。
您收到错误,因为终止符分配的语法错误。 您正在分配类型为int
cool_array[i]
。 因此,赋值的右侧必须是int
类型的表达式。 可以是'\\0'
或(100%等效)只是0
,但是花括号( {}
)在那里没有位置。
cool_array[i] = 0;
您可能对cool_array
声明中出现的类似代码感到困惑:
int cool_array[10] = {0};
请注意,这是一个声明,而不是可执行语句,并且内部没有赋值。 它包含用于该数组的初始化程序 ,但是尽管其形式相似,但语法和语义均不同于赋值。 具体来说,它说将数组的第一个元素(显式)初始化为0,并隐式初始化所有其他元素(为0)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.