不在字符串中使用空终止会有什么影响?

dae*_*dog -5 c string char

以下面的代码为例:

int main(){
    char string[] = { 'h' , 'e', 'l', 'l', 'o' };
    printf(string);
    printf("\n%d", strlen(string));
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

hello
6
Run Code Online (Sandbox Code Playgroud)

因此,从一开始我就可以看到strlen价值偏差为1,但如果我们考虑它,它似乎并不是一个障碍.

什么时候不终止字符串会产生问题?

And*_*nle 10

不在字符串中使用空终止会有什么影响?

技术上没有,因为C字符串 - 按定义 - 由空字符终止:

字符串是由第一个空字符终止并包括第一个空字符的连续字符序列.

因此,如果没有正确终止,它不是一个字符串.

如果将字符串传递给需要字符串的代码,则将调用未定义的行为.