字符串终止C/C++ char = 0

Suk*_*esh -8 c string

#include<stdio.h>
#include<string.h>

void terminateString(char *str){
    str[3] = 0;
    printf("string after termination is:%s\n",str);
}

int main(){
    char str[]="abababcdfef";
    terminateString(str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

string after termination is:aba
Run Code Online (Sandbox Code Playgroud)

我们只将索引'3'处的元素赋值为0,但为什么忽略该索引之后的所有字符?有人可以解释一下这种行为吗?

Jer*_*ner 7

我们只将索引'3'处的元素赋值为0,但为什么忽略该索引之后的所有字符?有人可以解释一下这种行为吗?

带有零终止字符串的约定是0字节表示字符串的结尾.因此,当printf()在位置3遇到零字节时,它会停止打印.