我有一个大小为512的字符数组ie
char buffer [512];
Run Code Online (Sandbox Code Playgroud)
某个点之后的此变量被修改为此
buffer [40] = '\0';
Run Code Online (Sandbox Code Playgroud)
这个赋值对变量做了什么?它是否将数组中的前40个char初始化为null?
不会.它将值NUL存储在阵列中的第41个位置.
将前40个字符初始化为NUL
memset(buffer, '\0', 40);
Run Code Online (Sandbox Code Playgroud)
要在编译时将整个缓冲区初始化为NUL,请尝试
char buffer[512] = {0};
Run Code Online (Sandbox Code Playgroud)
要么
char buffer[512] = "";
Run Code Online (Sandbox Code Playgroud)
要在运行时初始化它,请尝试
memset(buffer, '\0', sizeof (buffer));
Run Code Online (Sandbox Code Playgroud)