繁体   English   中英

为什么数组不接受空终止符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM