Sha*_*Kim 4 c arrays initialization string-literals zero-initialization
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
int i;
char s1[100] = "Computer Programming Class";
char s2[100] = "ECE";
int length = (int)strlen(s1);
for (i = 0; i < length; i++) {
s2[i] = s1[length - 1 - i];
}
s2[i] = '\n';
printf("%s", s2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的一项测试,我不明白为什么它会按预期工作。就是一段代码,将s1的顺序颠倒过来,存到s2中,然后打印出来。在我看来,当 s1 向后存储时,s2 中的空字符将被覆盖,而且 s1 中的空字符永远不会写入 s2 中,因为它是从最后一个字符开始的。但打印出来效果很好。为什么?
strlen返回字符串的长度(以不包括空终止符的字符为单位),因此i < length在其迭代中不包括空终止符s1
当您部分初始化数组时,就像您对其余元素所做的那样,char s2[100] = "ECE";其余元素已经初始化为零。换句话说,您对s2long 的写入length < 99保证以空终止。
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |