我在下面有一段代码,会将文本_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 */
答案 0 :(得分:1)
strcpy
和strcat
都将将NUL终结符从源字符串复制到目标缓冲区。
因此,您需要在目标缓冲区中为该终结符保留空间。
为避免任何疑问,"_dut1_serial_log.txt"
是const char[21]
类型。