所以我将这个主数组保存在一个时间数组中。然后,我使用'\ 0'来“删除”其内部的主数组。在这一点上,如果我打印主数组,它将只打印空白。但是,如果那样的话,我使用for喜欢主数组=时间数组。 x = 0 x <4 x ++时,它确实从另一个数组复制了四件事,但同时也打印了我执行“ \ 0”之前的内容
我尝试了一段时间的柜台,但也没有工作。香港专业教育学院以前使用\ 0,它的工作idk为什么现在不工作
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中,它只会打印空白,所以我不明白为什么会发生这种情况
答案 0 :(得分:5)
strlen
计算出距第一个'\0'
的距离。在第一个循环中,在字符串的开头插入一个'\0'
。然后检查循环条件,瞧瞧,strlen(numeros)
是0
(因为第一个字符现在是NUL终止符)和y
(现在是值{{1 }})大于该值,就完成了。
如果您想将其归零,则可以存储原始的1
并将其用于测试。或者,您可以完全删除循环,然后将其替换为strlen
:
memset
或者您可以将循环写为零,直到遇到NUL,将两次通过的解决方案变成一次通过的解决方案:
memset(numeros, '\0', strlen(numeros));
for (int i = 0; numeros[i]; ++i) {
numeros[i] = '\0';
}
的结束条件意味着它在达到已经为NUL的值时停止,并在搜索时将非NUL值清零。
答案 1 :(得分:-3)
提示:
for(int y = 0; y <= strlen(numeros); y++){
printf("blanking character %d\n", y);
numeros[y] = '\0';
}
printf("%s\n", numeros);
for(int z = 0; z <= 4; z++){
numeros[z] = numerosTemp[z];
}
printf("%s\n", numeros);
对要打印的内容进行预测,然后将其与实际情况进行比较。
我待会儿再说。