<分区>
我认为通常你不能增加数组的大小。 但是如果我这样做呢:
char arr[4];
strncpy(arr,"12347777",8);
它显示当我调用 strlen(arr) 时长度增加了。 谁能给我解释一下那里发生了什么?
<分区>
我认为通常你不能增加数组的大小。 但是如果我这样做呢:
char arr[4];
strncpy(arr,"12347777",8);
它显示当我调用 strlen(arr) 时长度增加了。 谁能给我解释一下那里发生了什么?
最佳答案
您还没有使数组变大。在数组结束后,你踩到了随机的内存片段。
strlen
不返回数组的长度,即使在正常情况下也是如此。它表示一个字符串有多长。由于您只在此处放置了八个字符(加上一个空终止符),因此它返回 8。但是,这是未定义的行为!因为你损坏了内存,你可能会崩溃,或者它可能会返回一个随机数(根据标准,一切皆有可能)。事实上,在一段不太简单的代码中,这可能会导致崩溃。
关于c - 在 C 中增加数组大小的奇怪方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22007486/