C:令人惊讶的数组结果

标签 c arrays

显然 C 不喜欢这样的声明:

char some_array[n] = "Text here"; <== 其中 n 是一个合适大小的 int....

嗯,实际上,我猜它喜欢它就好了,但输出让我感到惊讶!这是一个例子。

    char two[4] = "What";
    printf("2: %s \n", two);

输出是:

2: WhatWhat 

WhatWhatWhatWhat 到底在做什么?!

所以我尝试添加:

    char test[4] = "abcd";

输出是:

2: WhatWhatabcd
3: abcd

是的,我明白了,我的语法不受欢迎。但为什么?!实际变量发生了什么?

最佳答案

字符串文字有一个额外的字符 - nul 终止符。

所以你需要让它的长度为 5:

char two[5] = "What";

或者如果可能的话:

char two[] = "What";

(您遇到缓冲区溢出或其他问题)

关于C:令人惊讶的数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15151013/

相关文章:

c - self 复制代码,如何在第一次迭代和后续迭代中实现不同的行为?

c - 设计交互式客户端

Javascript从数组中删除项目但保留引用编号

c - 带有 char 数组参数的函数

python - 从 Numpy 3D 数组到 2D 数组的转换

c - printf ("%s",数组);不打印任何内容

c - 返回整数时出现段错误

c - 逐位串联

C:使用空指针数组

c - 处理大量变量