下面有一段代码,将文本_dut1_serial_log.txt附加到提供的文件名。提供的文件名是targetP指向的结构中的变量。
文本_dut1_serial_log.txt长20个字符。我的问题是当我为空终止符调用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 */

最佳答案

strcpystrcat都将把NUL终止符从源字符串复制到目标缓冲区。
因此,您确实需要在目标缓冲区中为该终止符保留空间。
为了避免任何疑问,"_dut1_serial_log.txt"是一种const char[21]类型。

关于c - c malloc()-我是否需要为空终止符分配空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47652159/

10-09 08:38