c malloc() - 我是否需要为null终止符分配空间

时间:2017-12-05 11:09:55

标签: c string malloc null-terminated

我在下面有一段代码,会将文本_dut1_serial_log.txt附加到提供的文件名中。提供的文件名是targetP指向的结构中的变量。

文字_dut1_serial_log.txt长20个字符。我的问题是,当我为null终结符调用malloc时,我需要+1吗?

char *filename_ending = "_dut1_serial_log.txt";
    char *filename_with_extension;
    prv_instance_t *targetP = threadParams->targetP;

    /*append filename ending "_dut1_serial_log.txt" to filename supplied*/
    filename_with_extension = malloc(strlen(targetP->output_filename)+1+20);
    strcpy(filename_with_extension, targetP->output_filename); /* copy name into the new var */
    strcat(filename_with_extension, filename_ending); /* add the extension */

1 个答案:

答案 0 :(得分:1)

strcpystrcat 都将将NUL终结符从源字符串复制到目标缓冲区。

因此,您需要在目标缓冲区中为该终结符保留空间。

为避免任何疑问,"_dut1_serial_log.txt"const char[21]类型。