gpt4 book ai didi

c - 为什么我的阵列没有被正确清空?

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:13 26 4
gpt4 key购买 nike

所以我将这个主数组保存在一个时间数组中。然后主数组我使用 '\0' 来“删除”其中的内容。此时,如果我打印主数组,它只会打印空白。但是如果那时我使用 for 来喜欢主数组 = 时间数组。 x = 0 x < 4 x++,它确实从另一个数组复制了四个东西,但它也打印了我执行 '\0' 之前的内容

我尝试了一段时间的计数器,但也没有用。我以前用过\0,它工作得很好,我想知道为什么它现在不工作了

for(int y = 0; y <= strlen(numeros); y++){
numeros[y] = '\0';
}

printf("%s\n", numeros);

for(int z = 0; z <= 4; z++){
numeros[z] = numerosTemp[z];
}
printf("%s\n", numeros);

我的预期结果只是 numerosTemp 数组的前四个字母,但它包含了在我执行\0 之前它曾经拥有的所有内容。但是在\0 之后的 printf 中它只打印空白所以我不明白为什么会这样

最佳答案

strlen 算出距离第一个 '\0' 有多远。在您的第一个循环中,您在字符串的开头插入一个 '\0'。然后检查循环条件,你瞧,strlen(numeros)0(因为第一个字符现在是 NUL 终止符),y (现在的值为 1)大于那个值,所以你完成了。

如果你想将它归零,你可以存储原始的 strlen 并将其用于测试。或者您可以完全删除循环并将其替换为 memset:

memset(numeros, '\0', strlen(numeros));

或者您可以将循环写为零,直到它到达 NUL,将两遍解决方案变成单遍解决方案:

for (int i = 0; numeros[i]; ++i) {
numeros[i] = '\0';
}

numeros[i] 的结束条件意味着它在达到已经为 NUL 的值时停止,在搜索时将非 NUL 值归零。

关于c - 为什么我的阵列没有被正确清空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com