Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符数组在C中打印的比我想要的多_C_Arrays_Char_Printf - Fatal编程技术网

字符数组在C中打印的比我想要的多

字符数组在C中打印的比我想要的多,c,arrays,char,printf,C,Arrays,Char,Printf,为什么要在char数组命令的末尾额外打印“COMMAND/desktop/document/myfilename” #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char c_header[] = "COMMAND /desktop/document/myfilename \r\n\r\n"; char command[8]; for

为什么要在char数组命令的末尾额外打印“COMMAND/desktop/document/myfilename”

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

int main() {
    char c_header[] = "COMMAND /desktop/document/myfilename \r\n\r\n";

    char command[8];

    for (size_t i = 0; i < 8 ; i++){
        command[i] = c_header[i];
    }
    command[7] = 's';

    printf( "command =%s\n", command);

}
中的字符串由
\0
终止。如果您试图将未被
\0
终止的字符数组视为字符串(例如,
printf
对其进行加密),它将溢出,直到您找到堆中的下一个
\0

长话短说,您需要明确确保字符串末尾有一个
\0

/* Added an extra char for the '\0' */
char command[9]; 

for (size_t i = 0; i < 8 ; i++){
    command[i] = c_header[i];
}
command[7] = 's';
command[8] = '\0';
/*为“\0”添加了一个额外的字符*/
char命令[9];
对于(大小i=0;i<8;i++){
命令[i]=c_头[i];
}
命令[7]=“s”;
命令[8]='\0';
中的字符串由
\0
终止。如果您试图将未被
\0
终止的字符数组视为字符串(例如,
printf
对其进行加密),它将溢出,直到您找到堆中的下一个
\0

长话短说,您需要明确确保字符串末尾有一个
\0

/* Added an extra char for the '\0' */
char command[9]; 

for (size_t i = 0; i < 8 ; i++){
    command[i] = c_header[i];
}
command[7] = 's';
command[8] = '\0';
/*为“\0”添加了一个额外的字符*/
char命令[9];
对于(大小i=0;i<8;i++){
命令[i]=c_头[i];
}
命令[7]=“s”;
命令[8]='\0';

您需要以
或NULL
或整数
0
结束字符串。您需要以
或NULL
或整数
0
结束字符串。

您永远不会以
命令中的
'\0'
'\0'
结束字符串:没有它就不是一个字符串。您不能将其用作库函数需要字符串的字符串。在
命令中,您永远不会使用
'\0'
'\0'
终止字符串:没有它,它不是字符串。您不能将其用作需要字符串的库函数的字符串。我怀疑此问题可能有一个或两个副本:((我怀疑此问题可能有一个或两个副本:((
NULL
是空指针,而不是字符串末尾的空终止符。
NULL
是空指针,而不是字符串末尾的空终止符。